大致步骤:
后续有补充再填上
- 空闲状态是指传输开始时CS为高电平且在向低电平转变的期间,以及传输结束时CS为低电平且在向高电平转变的期间;有个从高到低的变化过程,CS拉低就开始通讯;
- 要注意SPI的4种模式,主从要一致;
#define SPI_CPHA 0x01 #define SPI_CPOL 0x02 #define SPI_MODE_0 (0|0) #define SPI_MODE_1 (0|SPI_CPHA) #define SPI_MODE_2 (SPI_CPOL|0) #define SPI_MODE_3 (SPI_CPOL|SPI_CPHA) SPI_MODE_3 << 6 //选择对应的模式,再左移6,本文中选择的是:SPI_MODE_3
- 通过CTRL0寄存器配置数据接收的长度(例如8bit,16bit);
注意事项:
- 正常启动后,测量SOC端的CLK是否正常;
- 使用逻辑分析仪查看MISO和MOSI有没有接反;例如主机发送的内容,呈现在MISO上,那说明接反了;
- 从机不许配置时钟、波特率、片选;都是由主机配置的;
- MISO和MOSI短接后,能够验证主机端是否收发成功,但不能排除MISO和MOSI是否接反;
SPI的最大传输速率主要受到以下几个条件影响:
1.SPI的最大时钟频率
2.CPU处理SPI数据的能力
3.输出端驱动能力(PCB所允许的最大信号传输速率)
备注:
信号 MISO = Master In Slave Out,即 在主机这边是输入,在从机那边是输出。
信号 MOSI = Master Out Slave In,即 在主机这边是输出,在从机那边是输入。