SPI工作在从机模式,经过一个芯片转换为USB口连接PC。现在给PC传数时遇到如下问题:写入一些数据,只有第一个字节的数能传到PC,以后的数据都是错误数据。感觉原因是因为第一个数据可以通过SPI0DR写入移位寄存器,后面的数据因为是工作在从机模式,时钟是不可控制,所以写入SPI0DR的数据无法写入移位寄存器。主要程序如下:
for(i=0;i<8;i++){
while(!(SPI0SR&0x20)) {
} //判断数据寄存器是否可写。第五位为1可写
SPI0DR=DATA;
}
SPI的初始化程序:
int Init_Spi(void){
DDRS=0xE0;
SPI0CR1=0x02;
SPI0CR2=0x00;
// SPI0BR=0x02; //波特率8分频
SPI0CR1=SPI0CR1|0x40;
}
单片机是9S12DP256
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |