SPI通讯优点就是快,一般单片机运行频率都达不到他通讯最大速度,这样各步骤间延时就不要了,然后最低需要3个io,时钟(SCK),读取(MISO),发送(MOSI),时钟的上升沿读取数据,下降沿发送数据,这特么好神奇哦,一个时钟里,既可以发送一个位,也能接收一个位,呀,这就是全双工通讯啊!关键他还不需要发送起始与结束信号,即是攻也是受?哎哟,这不是就是变态嘛。标准名称:
(1)MISO– Master Input Slave Output,主设备数据输入,从设备数据输出;
(2)MOSI– Master Output Slave Input,主设备数据输出,从设备数据输入;
(3)SCLK – Serial Clock,时钟信号,由主设备产生;
(4)CS – Chip Select,从设备使能信号,由主设备控制。
用GD25Q64存储芯片为例写spi通讯;
一:IO配置,加一个片选(cs),我们第一步先定义4个IO,
二:写/读数据,因为是全双工的写一个字节的同时也会读一个字节,所以写函数要带返回值。
三:读写函数已经写好,我们读个GD25Q64的ID号吧。CS拉低,发送90H + 24个位的0其实就是3个字节的0X00,一个发4个字节就行,则返回ID,注意ID号是16位的。
发送完读2个字节的数据,第一个是生产商的ID,第二个是器件的ID。
四:主函数
五:硬件SPI外设
1,功能引脚配置
2,配置控制寄存器
3,SPI状态寄存器
状态清零是给B7,B6位写1;
4,读写配置,发送完也刚好接收完,用同一个函数。
5,其余都和模拟的spi一样了。