IIc通信协议之(二)——PCF8591控制

本文详述了使用Verilog通过I2C协议控制PCF8591 AD-DA芯片的过程,包括理解芯片手册、建立时间与保持时间的重要性,以及如何修正时序问题以实现DAC功能。通过调整时钟分频解决了通信速度过快导致的问题,最终成功驱动DAC输出并分析了输出误差原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

本章继上节iic通信协议,在理论学习之后,找到一块iic接口的片子——PCF8591,它是一款AD-DA集成芯片。所以本节对iic通信协议不做过多的介绍,重心放在iic的rtl建模,本次通过iic控制PCF8591实现DAC输出功能。

 

PART1:建模前的准备

包括两部分,一是芯片手册阅读,二是建模思路;

一、阅读PCF8591芯片手册,获得以下信息:

>PCF8591的指令控制顺序:主机先向其发送地址指令(包括sda方向选择指令);然后是控制字指令;最后是数据指令(dac对应8bit的dac二进制数据,adc对应为sda方向操作控制指令)

>PCF8591具有adc和dac两种功能,选择哪一种功能需要通过指令(2、3指令功能决定)进行确定。

>模块硬件地址应确定,为000(A2A1A0)。

>具体的寄存器配置(指令)就不详细介绍,总结如下:

adc功能配置,先后发送0x90、0x40+channel(取值0、1、2、3,总共有四个通道)、0x91即可;

dac功能配置,先后发送0x90、0x40、user_data(8bit)即可;

>要注意iic通信速率及相关时间的限制,总结如下

DAC模式输出频率Fmax=11.1KHz;

Fsclk_max=100kHz;(这就对sclk的高低电平持续时间有要求);

开始、结束、数据的建立保持时间(如下表);

【相关参数表格】

【iic时序示意图】

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值