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

再次请教SPI通讯问题

再次请教SPI通讯问题

还是上次的TLC2543的SPI通讯.经过我调试上回对了 可过几天我在用又出问题了
我是用SPI口三个口即SCK MISO MOSI 和一个通用I/O口作为片选信号
我在SPI中断中加入片选 即读完16位数据后给一个片选高电平后延时10us再给个低电平
SPI设置为如下:
SPI0BR=0x27;
SPI0CR2=0X00;
SPI0CR1=0Xd0;
SPI0DR=0x0c;
为什么我读的16位数据不准确 有变话而且在改变延时后输出的电压值变化不同有时候是以16为一个单位递增
我读数据函数如下:
interrupt void SPI_interrupt(void){
AD=SPI0SR; //读状态寄存器
SPI0DR=0X0C; //发送寄存器付值
AD[i++]=SPI0DR; //分两次读接收数据
if(i>=2){ //如果接收到16位
i=0;
recdata=((AD[0]<<4)&0x0ff0)|((AD[1]>>4)&0x000f); //转换为12位数据
PORTB_BIT0=1; //控制片选信号
delay_10us();
PORTB_BIT0=0;
}
}
我用的是HCS12DG128
请问一下我出错的问题在哪里??
返回列表