KV260单板PS控制设置IIC开关芯片

2023-10-09 10:50

本文主要是介绍KV260单板PS控制设置IIC开关芯片,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在KV260单板中有一个IIC控制的4选1路开关芯片TAC9546A,使用时通过IIC设置该芯片选择IIC通道,PS中输出一路IIC可以控制4路IIC设备。

IIC协议

在介绍IIC SWITCH之前,先简单介绍一下IIC协议,如何使用PL实现IIC控制需要对IIC协议非常熟悉,如果使用PS控制IIC,只需要对IIC协议了解就可以。

IIC协议比较常用,不了解的朋友,建议参考两个文档一个是Xilinx的pg090,另一个是Philips Semiconductors I2C-bus Specification。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hxOTvQju-1658546062470)(./pic/2.png)]

IIC总线主从设备之间通信主要包括4部分:
• START
• Slave Address
• Data Transfer
• STOP

通常的IIC通信中Data Transfer中先发送地址再发送数据,但IIC SWITCH芯片 TAC9546A有一些差异,发送完Slave Address后直接发送数据,读操作时,发送完Slave Address后直接读取数据,下一节会具体介绍。

IIC SWITCH

TAC9546A

在KV260通过HDA引脚连接TAC9546A,使用TAC9546A输出3个通道,分别连接两路MIPI摄像头和一路树莓派摄像头。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7xTukavV-1658546062472)(./pic/1.png)]

写寄存器

通过往IIC SWITCH控制寄存器中写入数据,来选择IIC通道B3、B2、B1、B0分别对应通道3、通道2、通道1和通道0四路输出。例如选择通道2时写入0x02。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E9dgITaJ-1658546062474)(./pic/5.png)]

通过IIC发送写寄存器命令时,先发送Slave Address,然后发送控制寄存器要写入的值。Slave Address中高4位固定,低3位A2A1A0可配置,再KV260中设置为100,所以Slave Address为1110100,0x74。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-478Vz2eb-1658546062475)(./pic/3.png)]

读寄存器

在写入寄存器后,为了验证是否写入正常,读取寄存器值。读取时先发送Slave Address,然后接收控制寄存器值。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Um6W4bD9-1658546062476)(./pic/4.png)]

PS中加入IIC

在KV260中使用EMIO,而不是MIO,需要在vivado中进行如下设置:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yqZdflJP-1658546062476)(.\pic\6.png)]

iic_sda和iic_scl都要使用IOBUF,iic_scl_io和iic_sda_io使用inout端口设置。

  IOBUF iic_scl_iobuf(.I(iic_scl_o),.IO(iic_scl_io),.O(iic_scl_i),.T(iic_scl_t));IOBUF iic_sda_iobuf(.I(iic_sda_o),.IO(iic_sda_io),.O(iic_sda_i),.T(iic_sda_t));

PS 读写 IIC SWITCH

在读写IIC时,可以使用轮询模式和中断模式,因为轮询模式较为简单,所以本次设计使用轮询模式。

写IIC SWITCH寄存器:

int i2c_switch_write(XIicPs *InstancePtr, u8 IIC_ADDR, u8 Data)
{int Status;u8 wr_data = Data;Status = XIicPs_MasterSendPolled(InstancePtr, &wr_data, 1, IIC_ADDR);while (XIicPs_BusIsBusy(InstancePtr));return Status;
}

读IIC SWITCH寄存器:

char i2c_switch_read(XIicPs *InstancePtr, u8 IIC_ADDR)
{u8 rd_data;XIicPs_MasterRecvPolled(InstancePtr, &rd_data, 1, IIC_ADDR);while (XIicPs_BusIsBusy(InstancePtr));return rd_data;
}

ILA调试

在PL中通过ILA观察IIC读写时序。

写寄存器:Slave Address为0x74,先发高bit后发低bit,发送完7bitSlave Address1110100后,发送0,该位表示写操作,等待IIC SWITCH发送ACK,然后发送数据0x02,等待ACK后发送停止位。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ign8hPzX-1658546062477)(./pic/7.png)]

读寄存器:Slave Address为0x74,先发高bit后发低bit,发送完7bitSlave Address1110100后,发送1,该位表示读操作,等待IIC SWITCH发送ACK,然后发送数据0x02,无应答,发送停止位。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8DI1Vlux-1658546062477)(./pic/8.png)]

注意事项

使用PS控制IIC时,要特别主要SlaveAddress,本次使用1110100,换算成十六进行位0x74,不要写成8bit11101000,这样芯片没有ACK。

这篇关于KV260单板PS控制设置IIC开关芯片的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/172334

相关文章

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

mtu设置多少网速最快? 路由器MTU设置最佳网速的技巧

《mtu设置多少网速最快?路由器MTU设置最佳网速的技巧》mtu设置多少网速最快?想要通过设置路由器mtu获得最佳网速,该怎么设置呢?下面我们就来看看路由器MTU设置最佳网速的技巧... 答:1500 MTU值指的是在网络传输中数据包的最大值,合理的设置MTU 值可以让网络更快!mtu设置可以优化不同的网

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Python远程控制MySQL的完整指南

《Python远程控制MySQL的完整指南》MySQL是最流行的关系型数据库之一,Python通过多种方式可以与MySQL进行交互,下面小编就为大家详细介绍一下Python操作MySQL的常用方法和最... 目录1. 准备工作2. 连接mysql数据库使用mysql-connector使用PyMySQL3.

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、