首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

关于SPI在从机模式下的数据输出问题

关于SPI在从机模式下的数据输出问题

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

返回列表