 
- UID
- 161144
- 性别
- 男
|
还是上次的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
请问一下我出错的问题在哪里??
|
|