本帖最后由 lab01 于 2014-7-3 15:55 编辑
最近买了2块pro mini板,研究一下SPI通讯,于是搜到LZ的帖子,期间有些失误导致通信失败,于是去LZ提供的英文网址学习了一遍,现将体会写下来,供后来者参考,不对之处请拍砖。
一、首先,对接线不理解,MISO<-->MISO,MOSI<-->MOSI,因为,SPI通信协议是全双工的,从这一点上说,似乎应该是MISO<-->MOSI,MOSI<-->MISO,有点像网络TX<-->RX,RX<-->TX。其实这样理解是不对的。主机在任何时刻只和SS为LOW的从机通信(也就是,只有SS引脚为LOW的从机才响应主机的呼唤),当主机向从机写数据时,通过MOSI(Master Out)发送到从机,对应相连的从机上的引脚也是MOSI(Slave In); 从机向主机写入数据时,用的是MISO<-->MISO,对从机而言,是Slave Out,对主机而言是Master In.
二、LZ将主机(master)和从机(slave)定义反了,因为,调用SPI.begin()中将SPI模式定义为master.
(原文:It then enables SPI mode with the hardware in "master" mode.)
还在继续学习,有许多不明白的地方等待弄明白。 |