PIC18F57Q84利用SPI主机通讯,只发送数据,不接收数据;一次性发送三个数据,但没有return SPI2RXB,测试得到发送的数据是错误的,这还是为什么
时间: 2023-09-30 22:04:08 浏览: 183
可能有多种原因导致你的问题:
1. 硬件问题:请确保你的硬件连接正确,包括SPI主机和从机设备的连接,以及电源供应是否稳定。
2. 代码问题:请检查你的代码是否正确。在发送数据时,你需要等待SPI发送完成后再进行下一次发送。同时,你需要清除SPI接收缓冲区的数据,以确保不会影响后续的通讯。
以下是一个简单的SPI发送三个字节数据的代码示例:
```
SPI2CON0bits.EN = 0; // 关闭SPI2
SPI2CON0bits.MODE = 0b000; // 主机模式
SPI2CON0bits.CKP = 0; // 时钟极性为0
SPI2CON0bits.CKE = 1; // 时钟边沿为上升沿
SPI2CON0bits.SMP = 1; // 数据采样在时钟中间
SPI2CON1bits.MSTEN = 1; // 主机模式使能
SPI2BRG = 0; // 时钟分频器设置为1:1
SPI2CON0bits.EN = 1; // 打开SPI2
// 发送三个字节数据
SPI2TXB = 0x01;
while (SPI2STATbits.SPITBF); // 等待发送完成
SPI2TXB = 0x02;
while (SPI2STATbits.SPITBF); // 等待发送完成
SPI2TXB = 0x03;
while (SPI2STATbits.SPITBF); // 等待发送完成
// 清除SPI接收缓冲区
unsigned char dummy = SPI2RXB;
```
如果你已经检查过以上问题但还是无法解决,请提供更多的详细信息和代码,以便我更好地帮助你解决问题。
阅读全文