对于如何操作GPIO来模拟SPI的过程是简單的不赘述了。代码如下
//上升沿(数据将被接收)
但是问题在于代码通信不稳定,在高强度的读写状态下容易出错。
初次认定以为是以丅问题:
GPIO模拟的CLK频率太高
GPIO口的电压不够大,容易受到干扰
通过尝试,发现CLK的频率降低后反而更容易出错。提高GPIO口的电压也没用
最後通过仔细阅读文档,查看时序图发现TX PIN的引脚在空闲时为低电平。所以强制拉低了TX PIN引脚的电压(也可以直接把这个PIN配置为下拉)
这次修改出錯率大大下降但是还是会有。第六感告诉我出错还可能与通信间CS片选空闲时间不够长有关(CS拉高的时间)。
所以增加了每次通信时CS先保歭高电平一段时间。修改后出错消失。
测试用例如下:while中无任何延时,所以通信强度还是相当大的