高级会员

- 积分
- 675
- 金钱
- 675
- 注册时间
- 2014-10-15
- 在线时间
- 159 小时
|
1金钱
我用STM32L4R5ZI驱动PCF8591,DAC正常
函数如下:
uchar DACconversion(unsigned char sla,unsigned char c, unsigned char Val)
{
Start_I2c(); //启动总线
SendByte(sla); //发送器件地址
if(ack==0)return(0);
SendByte(c); //发送控制字节
if(ack==0)return(0);
SendByte(Val); //发送DAC的数值
if(ack==0)return(0);
Stop_I2c(); //结束总线
return(1);
}
读取AD值一直是0xff
程序如下:
unsigned char PCF8591_ReadADC(unsigned char AINX)
{
unsigned char ADC_Value;
Start_I2c(); // 起始信号
SendByte(0x90); // 发送PCF8591地址
if(ack==0)return(0); // 响应应答
SendByte(0x40 | AINX); // 选择ADC通道
if(ack==0)return(0); // 响应应答
Start_I2c(); // 重新启动
SendByte( 0x91); // 发送PCF8591读命令
if(ack==0)return(0); // 响应应答
RcvByte(); // 第一次读取丢弃(旧数据)
Ack_I2c(0); // 发送非应答信号
ADC_Value = RcvByte(); // 读取ADC值
Ack_I2c(1); // 接收应答
Stop_I2c(); // 停止信号
return ADC_Value;
}
请问高手,如何解决?谢谢!
|
|