前言
第十届和第十一届已经写完了,但是目前还是有很多bug,打算写几个专门记录本人程序bug的博客。
此为PCF8591的电路图,也就是CT107D开发板进行AD转换的主要模块。
PCF8591有两个功能
一个是AD转换,另一个DA转换,不细谈这两个功能的具体,只谈我目前的bug
1、AD测量电压不准:
- 读取数据后发送应答位1表示不连续读取
2、DA输出不准确
- PCF8951的控制寄存器第三位的意思是是否打开DAC,当第三位置一,DAC打开,不影响ADC的使用,所以再DAC启动的情况下写ADC模式时不能关闭DAC。
uint16 ADC_Mode()
{
uint8 Val;
uint16 Val_e;
IIC_Start();
IIC_SendByte(0x90);
IIC_WaitAck();
IIC_SendByte(0x43);//0x43的4为打开DAC
IIC_WaitAck();
IIC_Stop();
IIC_Start();
IIC_SendByte(0x91);
IIC_WaitAck();
Val = IIC_RecByte();
IIC_SendAck(1);
IIC_Stop();
Val_e = ((5120/255)*Val)/10;
return Val_e;
}