使用FT4222H芯片IIC接口与AD5272芯片通信_python代码示例

1.接线

购买的是50K的AD5272设备

在这里插入图片描述
AD5272中ADDR引脚有三种接法,根据接法不同,芯片IIC的7位地址也不同。
本文选用ADDR接GND,所以7位地址二进制为:0b0101111,转换为16进制为0x2f。
在这里插入图片描述

2.代码解读

2.1 安装 ft4222库

pip install ft4222

2.2 初始化IIC主机

dev = ft4222.openByDescription('FT4222 A') # 将InterfaceA 打开
dev.i2cMaster_Init(100) # 初始化I2C主机,并且设备速率为标准IIC速率(100kb/s)

2.3 读写函数

2.3.1 写函数

def i2cMaster_WriteEx(self, *args, **kwargs):
			# 写函数,有三个参数,addr,flag,data;
			# addr:为从机设备的地址(AD5272设备是7位寻址,所以只计算7位就行);函数会自动填写写位0;
			# flag: 控制开始和结束,I2C根据SDA、SCL的电平高低来决定是开始位还是结束位;这里一般填写START_AND_STOP,即一帧发送就理解结束。
			# data: 要发送的数据
			pass

2.3.2 读函数

def i2cMaster_ReadEx(self, *args, **kwargs):
			# 读函数,有三个参数:addr,flag,bytesToRead;
			# addr: 为从机设备的地址(AD5272设备是7位寻址,所以只计算7位就行);函数会自动填写读位0;
			# flag: 控制开始和结束,I2C根据SDA、SCL的电平高低来决定是开始位还是结束位;这里一般填写START_AND_STOP,即一帧发送就理解结束。
			# bytesToRead (int) : 从从机读取的字节数
			pass
根据I2C的特点,读的时候需要先写一帧数据。

3.全部代码

import time
import ft4222.I2CMaster

dev = ft4222.openByDescription('FT4222 A')
dev.i2cMaster_Init(100)

write_50K_addr = 0x2f

""" 允许通过数字接口更新游标位置和50-TP存储器内容 """
unlock_cmd = bytes([0x1C, 0x03])  # 写控制寄存器解锁, 使能器件进行50-TP编程, 允许通过数字接口更新游标位置
dev.i2cMaster_WriteEx(write_50K_addr, ft4222.I2CMaster.Flag.START_AND_STOP, unlock_cmd)
time.sleep(0.01)

""" 将0x100写入RDAC寄存器;游标移到¼满量程位置 """
cmd = bytes([0x04, 0x50])  # RDAC寄存器指令
dev.i2cMaster_WriteEx(write_50K_addr, ft4222.I2CMaster.Flag.START_AND_STOP, cmd)

""" 准备从RDAC寄存器读取数据。 """
cmd = bytes([0x08, 0x00])  # 读RDAC寄存器指令,将读指令写给从机,然后调用读函数
dev.i2cMaster_WriteEx(write_50K_addr, ft4222.I2CMaster.Flag.START_AND_STOP, cmd)
time.sleep(0.01)
data1 = dev.i2cMaster_ReadEx(write_50K_addr, ft4222.I2CMaster.Flag.START_AND_STOP, 2)  # 读取2字节
temp = (data1[0] & 0x03) * 256 + data1[1]

res = temp / 1024 * 50
print('--------------.' + str(res) + ' K') # 这里输出的是AW之间的电阻值,可以用万用表测量

""" 将RDAC寄存器内容存储到50-TP存储器中。SDO输出16位字,其中最后10位包含RDAC寄存器0x100的内容"""
cmd = bytes([0x0C, 0x00])  # RDAC寄存器指令
dev.i2cMaster_WriteEx(write_50K_addr, ft4222.I2CMaster.Flag.START_AND_STOP, cmd)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值