专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 单片机

STM32F100片外ADS1248,对寄存器操作不成功,求解…解决思路

发布时间:2010-06-14 15:20:15 文章来源:www.iduyao.cn 采编人员:星星草
STM32F100片外ADS1248,对寄存器操作不成功,求解…
代码如下

GPIO定义:

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_11;        //    SCLK、DIN、START
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOB, &GPIO_InitStructure);

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;                                                //    DOUT
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_Init(GPIOB, &GPIO_InitStructure);

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;                                                //    DRDY
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  GPIO_Init(GPIOB, &GPIO_InitStructure);


对寄存器操作如下:

void ADS1248WREG(unsigned char regaddr,unsigned char databyte)
 {
  ADS1248SPI(0x40+(regaddr&0x0F));
  ADS1248SPI(0X00);
  ADS1248SPI(databyte);
 }

unsigned char ADS1248RREG(unsigned char regaddr)
 {
  unsigned char r=0X00;
  ADS1248SPI(0x20+(regaddr&0x0F));
  ADS1248SPI(0X00);
  r=ADS1248SPI(0XFF);
  return r;
 }

 unsigned char ADS1248SPI(unsigned char m)
 {
  unsigned char i,r=0;
  for(i=0;i<8;i++) {
   ADS1248_SCLK(1);
   __NOP();__NOP();__NOP();__NOP();__NOP();
   r<<=1;
   if (m & 0x80) ADS1248_SADI(1);
   else  ADS1248_SADI(0);
   __NOP();__NOP();__NOP();__NOP();__NOP();
   ADS1248_SCLK(0);
   __NOP();__NOP();__NOP();__NOP();__NOP();
   if (GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)>0) r++;
   __NOP();__NOP();__NOP();__NOP();__NOP();
   m<<=1;
  }
  return r;
 }


执行AD寄存器写MUX0:

  ADS1248WREG(0X00,0x01);  // MUX0=00 000 001 = 0x01  AIN1
  iads=ADS1248RREG(0X00);

 CLK接GND,VREFOUT和VREFCOM接4.7uF,其它电路参照手册。
 问题是,往寄存器写数据后,读出来的iads数为0X00,理论应该是0X01;用表和示波器均测得CLK、DIN有数据时电平变化,DOUT无电平变化,是否和代码有关,求解!

Q群:77203167

------解决方案--------------------
经过几天的调试,测试,IO口定义没问题,读写操作也木问题,可能是ADS1248未工作,关于内部晶振,无法测量,现正继续…
------解决方案--------------------
只要SPI的时序正确就可以
------解决方案--------------------
问题完美解决:
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: