电路设计论坛
直播中

王涛

7年用户 1206经验值
私信 关注
[问答]

采用STM32驱动AD7934芯片,一直不能读出AD值是为什么?

我采用STM32驱动AD7934芯片,一直不能读出AD值。
时钟我采用的STM32内部输出输出,频率为8M。通过仿真发现,CONVST置低后,AD7934并没有启动转换,使BUSY信号变为高电平。
驱动程序如下:请大神帮忙指点迷津!谢谢
______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
* 名    称:uint16_t Read_AD7934()
* 功    能:读 AD7934          通道的AD值
* 入口参数:无
* 出口参数:无
* 说    明:
* 调用方法:无
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
昆特16_t read_AD7934(昆特8_t CH)
{
viint16_t AD_Temp; 16_t AD_Temp; 16_t AD_Temp; 16_t AD_Temp; 16_t AD_Temp; 16_t AD_Temp; 16_t AD_Temp;
GPIO_InitTypeDef GPIO_Init结构;
  
           GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_All;       //所有GPIO为同一类型端口
           GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;   //推挽输出模式                              上拉输入GPIO_Mode_IPU
GPIO_Init结构.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD,  GPIO_InitStructure);
ad7934_convst_h;
ad7934_rd_h;
           AD7934_WB_H;                              // WB置一
ad7934_cs_h;
ad7934_wr_h;
           AD7934_DATA =   (uint16_t)(0x0001 | CH<<5);  //写地址 0x0121; //
NOP ();//NOP ();
ad7934_cs_l;
ad7934_wr_l;
NOP ();//NOP ();
ad7934_wr_h;
ad7934_cs_h;
           GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_All;       //所有GPIO为同一类型端口
           GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IPU;      //推挽输出模式GPIO_Mode_Out_PP                              上拉输入
GPIO_Init结构.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD,  GPIO_InitStructure);
ad7934_convst_h;
ad7934_cs_h;
/ad7934_rd_h;
           AD7934_CONVST_L;     //启动转换
nop () ;
(!) ((ad7934_busy_read));
nop () ;
while(ad7934_busy_read);
ad7934_convst_h;
ad7934_cs_l;
ad7934_rd_l;
/迟延(0x5);
AD_Temp = AD7934_DATA 0xfff;
NOP (); NOP ();
ad7934_rd_h;
ad7934_cs_h;
返回 AD_Temp;
}

更多回帖

发帖
×
20
完善资料,
赚取积分