就通信方式讨论:(以下不论ARM核\嵌入式\低端\高端均称为单片机) 单片机间通信可用UART或SPI串口通信,UART适合速率不高,为了兼容低端单片机的场合。SPI比较通用,而且速率可高至单片机核心时钟的1/4(但单片机IO速率低的要注意不能超过单片机IO速率)。高端单片机,如STM32F103系列,带有DMA,可减轻CPU负担。 单片机与PC通信,一般用串口或USB接口。串口或用MAX232芯片与PC串口相连,或用USB转UART芯片(PL2302等)桥接。USB口需单片机带USB接口模块,或USB桥接芯片,或用软件模拟(仅业余使用,商品或工业使用不推荐)。 就USB接口讨论: 单片机所带USB接口多为device接口,很少有host接口。单片机与PC相连,单片机一般做device角色。 一般USB设备开发,都需要编写上位机驱动。除非做成 USB HID 类协议,因为操作系统一般是带有HID驱动的,但缺点很明显,HID协议较复杂,且传输速率低。 区别:单片机间通信一般需自定协议,相对自由;单片机与上位机通信一般依靠现有协议,然后自定需要的功能协议。 写到这才想起来。。楼主说的单片机间通信是近距离通信还是远距离通信?。。。我按照在同一设备内考虑的。若是较远距离,一般速率做不高,依靠485协议,或CAN协议等,甚至有的直接将通信放到局域网环境上。未见单片机间通过USB协议通信的,因为USB OTG实现很复杂。
两台机器采用USB接口通信的前提条件是,一方作为device,另一方作为host。 在两个cortex-M3 MCU的情况下,两方都只能作为device,那是无法通信的。如果要通信,最好其中一个MCU比较高级,具备usb host controller。 一方是MCU,一方是PC的情况下,MCU是device,PC作为host,可以通信。至于怎么通信,建议你自己搜一下网上资料。USB通信协议比较复杂,不是这里三言两语可以解决的问题。 具体到STM32,你可以看一下STM32提供的文档,和示例源码。 USB协议入门读物:USB in a nutShell
|
|