蓝桥杯—PCF8591、IIC总线、EEPROM介绍

Brenda ·
更新时间:2024-11-14
· 725 次阅读

1、IIC总线相关介绍

  I2C串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL。所有接到I2C总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线的SCL上。下面根据官方提供的库文件,介绍需要注意的函数有:

(1)void init_pcf8591(void)

void init_pcf8591(void) { i2c_start(); i2c_sendbyte(0x90); i2c_waitack(); i2c_sendbyte(0x03); //ADC通道3 i2c_waitack(); i2c_stop(); operate_delay(10); }

  这个函数为PCF8591初始化函数,对于选择通道函数为i2c_sendbyte(),上述代码选择通道3。

  最后两位配置选择哪个通道 ,其余位不用管。

(2)unsigned char adc_pcf8591(void)

unsigned char adc_pcf8591(void) { unsigned char temp; i2c_start(); i2c_sendbyte(0x91); i2c_waitack(); temp = i2c_receivebyte(); i2c_sendack(1); i2c_stop(); return temp; }

  通过I2C总线提取ADC结果,此函数为ADC转化结果函数。可以直接调用。

2、PCF8591芯片

(1)原理图

   PCF8591的功能包括多路模拟输入、内置跟踪保持、8-bit模数转换和8-bit数模转换。PCF8591的最大转化速率由I2C总线的最大速率决定。AIN0~AIN3:模拟信号输入端,A0~A2:引脚地址端,SDA、SCL:I2C 总线的数据线、时钟线。OSC:外部时钟输入端,内部时钟输出端,EXT:内部、外部时钟选择线,使用内部时钟时 EXT 接地,AGND:模拟信号接地。AOUT:D/A 转换输出端。

 (2)地址字节

   \bullet A2、A1、A0硬件接地为0;

   \bullet 最低位表示的是你要从IIC总线上读数还是写数据,1表示读,0表示写,故写地址为:0X90;读地址为:0X91;

(3)控制字节

   

   这个是初始化的协议:分别是startIIC、(地址写)发送0x90、等待应答、发送控制字节(AD这里是选择通道的指令,如选择通道3,0x03)0x03、等待应答、(达到目的,没有后续的操作,直接停止总线)StopIIC。

  \bullet 配置转换数值函数

  首先开始startIIC—发送读地址0X91—等待应答—读数值—返回给PCF8591表示收到—如果不在接受则要传参数1—StopIIC。

(5) A/D转换要求

  D/A转换其实就是把数字信号转换成模拟信号输出,用单片机发数字通过D/A转换成电压输出,检测的方法可以用电压表测量。配置方面和D/A类似。

3、EEPROM使用

(1) AT24C02芯片原理图

  管脚介绍:

  AT24C02,可以掉电依旧保存上一次操作的数据,下次上电后接着运行。

(2)相关官方定义函数

  向AT24C02(add)写入数据val。

void write_eeprom(unsigned char add,unsigned char val) { i2c_start(); i2c_sendbyte(0xa0); i2c_waitack(); i2c_sendbyte(add); i2c_waitack(); i2c_sendbyte(val); i2c_waitack(); i2c_stop(); operate_delay(10); }

  向AT24C02(add)读出数据da。

unsigned char read_eeprom(unsigned char add) { unsigned char da; i2c_start(); i2c_sendbyte(0xa0); i2c_waitack(); i2c_sendbyte(add); i2c_waitack(); i2c_start(); i2c_sendbyte(0xa1); i2c_waitack(); da = i2c_receivebyte(); i2c_sendack(0); i2c_stop(); return da; }

  其中写函数需要指定AT24C02的地址以及需要写入的数据,读函数要想取回写进的数据,需要从相同的地址里面读。

图1:Device Address

   从图1上看,读数据地址为:0XA1;写地址为:0XA0;


作者:范飓飞



eeprom iic pcf8591 蓝桥杯

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章