微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > ADS1118显示乱码驱动错误

ADS1118显示乱码驱动错误

时间:10-02 整理:3721RD 点击:

开始用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));      之后;这样才是在上升沿更新数据。

另外,

建议用示波器观察,检验接口时序,以验证程序所实现的时序是否跟预想的一致。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top