用GPIO模拟SPI通信的一个小而关键的问题
也有可能是一个愚蠢的问题
省略基本前提条件,都是通用的一般的,希望有经验的前辈给予指点。
问题的主体就是 如何用代码来表达实现SPI协议里所说的在下降沿发送数据、上升沿采样数据
有两种方式我现在不知道应该采用哪一种才是对的:
1,先后依次操作(设置电平)gpio_clk和gpio_mosi;
2,同时操作gpio_clk和gpio_mosi(所有的gpio口在硬件上连接着一个寄存器,gpio与寄存器的为一一对应着,向这个寄存器写入一个数据,这个数据中对应gpio_clk和gpio_mosi的位已设置好相应的值,这样就实现了同时操作gpio_clk和gpio_mosi)
我一边写一边在想,又看了一遍协议,忽然发现好像问题是这样的:一个CLK周期里包含两个动作——输出和采样,但是这两个动作是不一样的,采样的时刻CLK发生跳变但数据线是稳定的,而输出的时刻二者同时发生跳变。对采样的情形我理解,这样的话代码应采用上述1方式编写,对输出的情形也基本理解,这样的话对应的代码应采用上述2方式编写,这样的话总的来看在一个CLK周期里应该将输出和采样分别采用不同的方式编写代码。但是我对输出的情形有一点不太理解的是我觉得那样是可以的但不知道是不是必须的,我觉得应该不是必须的。这些都是猜测想象,不知道是不是对的,请高手前辈指点。
我在做基于博通的BSP开发,不是单片机,不知道这有没有关系