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

相关文章

Spring MVC如何设置响应

《SpringMVC如何设置响应》本文介绍了如何在Spring框架中设置响应,并通过不同的注解返回静态页面、HTML片段和JSON数据,此外,还讲解了如何设置响应的状态码和Header... 目录1. 返回静态页面1.1 Spring 默认扫描路径1.2 @RestController2. 返回 html2

四种简单方法 轻松进入电脑主板 BIOS 或 UEFI 固件设置

《四种简单方法轻松进入电脑主板BIOS或UEFI固件设置》设置BIOS/UEFI是计算机维护和管理中的一项重要任务,它允许用户配置计算机的启动选项、硬件设置和其他关键参数,该怎么进入呢?下面... 随着计算机技术的发展,大多数主流 PC 和笔记本已经从传统 BIOS 转向了 UEFI 固件。很多时候,我们也

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

SpringBoot项目引入token设置方式

《SpringBoot项目引入token设置方式》本文详细介绍了JWT(JSONWebToken)的基本概念、结构、应用场景以及工作原理,通过动手实践,展示了如何在SpringBoot项目中实现JWT... 目录一. 先了解熟悉JWT(jsON Web Token)1. JSON Web Token是什么鬼

使用Spring Cache时设置缓存键的注意事项详解

《使用SpringCache时设置缓存键的注意事项详解》在现代的Web应用中,缓存是提高系统性能和响应速度的重要手段之一,Spring框架提供了强大的缓存支持,通过​​@Cacheable​​、​​... 目录引言1. 缓存键的基本概念2. 默认缓存键生成器3. 自定义缓存键3.1 使用​​@Cacheab

java如何调用kettle设置变量和参数

《java如何调用kettle设置变量和参数》文章简要介绍了如何在Java中调用Kettle,并重点讨论了变量和参数的区别,以及在Java代码中如何正确设置和使用这些变量,避免覆盖Kettle中已设置... 目录Java调用kettle设置变量和参数java代码中变量会覆盖kettle里面设置的变量总结ja

Python实现局域网远程控制电脑

《Python实现局域网远程控制电脑》这篇文章主要为大家详细介绍了如何利用Python编写一个工具,可以实现远程控制局域网电脑关机,重启,注销等功能,感兴趣的小伙伴可以参考一下... 目录1.简介2. 运行效果3. 1.0版本相关源码服务端server.py客户端client.py4. 2.0版本相关源码1

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

uniapp设置微信小程序的交互反馈

链接:uni.showToast(OBJECT) | uni-app官网 (dcloud.net.cn) 设置操作成功的弹窗: title是我们弹窗提示的文字 showToast是我们在加载的时候进入就会弹出的提示。 2.设置失败的提示窗口和标签 icon:'error'是设置我们失败的logo 设置的文字上限是7个文字,如果需要设置的提示文字过长就需要设置icon并给