有用户在把纬图的Ginkgo USB-SPI适配器当作从机模式使用的时候遇到一些问题,我根据他们的问题做了个简单的总结和注意事项,希望对以后使用从机模式的用户有一定的帮助。
对于SPI从机模式的使用,比较重要一点就是对SPI数据传输协议的理解,最主要的就是对时钟极性和时钟相位的理解,如果你对时钟相位和时钟极性不是很清楚,那么也没太大关系,你只需要记住将Ginkgo USB-SPI适配器的时钟相位和时钟极性设置成和你主机一样即可。总的来说有以下几点需要注意:
时钟极性和时钟相位必须和主机设置一样;
硬件连接一定要正确,主机MISO接从机MISO,主机MOSI接从机MOSI,主机SCLK接从机SCLK,主机SSEL接从机SSEL,主机和从机地线最好也接在一起;
Ginkgo USB-SPI适配器是以SSEL0作为片选信号,低电平有效,该引脚不能一直为低电平,否则接收到的数据不能上传到PC,在数据传输的时候该引脚由主机拉低,数据传输完毕后必须由主机拉高,片选信号被拉高后,主机发送给从机的数据才能被PC端接收到;
为保证数据传输的可靠性,数据传输时钟信号频率不能太高,目前在18MHz测试数据传输稳定可靠。
作为从机模式使用的时候还有一点也需要注意,从机模式下SPI适配器工作于全双工模式,也就是说从机在发送数据的同时也在接收数据,所以当主机读取数据的同时,从机也会接收到数据,但是这个数据往往是没任何意义的数据。从机收发数据流程一般如下:
1、从机初始化,准备接收数据;
2、调用从机读数据函数查询是否接收到了主机发送的数据;
3、若从机接收到了主机发送的数据,则判断数据是否合法,若是合法数据则处理数据;
4、若从机需要发送数据给主机则调用从机写数据函数将数据写入适配器内部缓冲区中等待主机读取;
5、主机主动产生时钟,从机将数据移位发送出去,由于从机是全双工模式,在发送数据的同时也会接收同等数量的数据;
6、从机再次调用读数据函数,将第5步收到的数据读回来并丢弃。
第6步最好要处理下,否则下次读取数据的时候会有前一次因为主机读取数据时产生的垃圾数据。
|