ADS1118显示乱码驱动错误
开始用stm32写驱动但是检测不到波形,于是改用msp430f5529来写程序:
我写程序的思路是:1.空闲时间SCLK为0 2.因为DOUT在上升沿更新数据,DIN在下降沿锁存数据,所以我在SCLK=1的时候进行更改DOUT和DIN之后中间有所延时,但是不知道为什么,现实的总是乱码(并未转换,读出什么就打什么)
想请帮我看看我写的模拟SPI通讯的是否正确,另外想问问为什么会有这种情况,有什么解决的问题
int ADS1118_WR_Data(int ADS_InitData)
{
int databuffer,datareceiver[2]={0,0};
char i,j;
ADS_CS(0);
ADS_SCLK(0);
__delay_ms(1);
databuffer=ADS_InitData;
for(j=0;j<2;j++)
{
for(i=0;i<16;i++)
{
ADS_SCLK(1);
__delay_us(5);
if(ADS_DOUT)
datareceiver[j]|=(1<<(15-i));
ADS_DIN(databuffer&(1<<i)); //设置的ADS_InitData是从低到高的
__delay_us(5);
ADS_SCLK(0);
__delay_us(10);
}
}
ADS_CS(1);
__delay_ms(30);
return (datareceiver[0]);
}
不知道有没有问题
你好,
1.空闲时间SCLK为0 ; 2.因为DOUT在上升沿更新数据,DIN在下降沿锁存数据;这都是正确的,
但是你的程序并不是这么的做的!
建议将 __delay_us(5); 置于
if(ADS_DOUT)
datareceiver[j]|=(1<<(15-i)); 之后;这样才是在上升沿更新数据。
另外,
建议用示波器观察,检验接口时序,以验证程序所实现的时序是否跟预想的一致。