我采用
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;
}