【经验】解析地平线X3芯片I2C调试方法
本文中世强将为大家解析地平线X3芯片I2C调试方法。地平线X3芯片提供了标准的I2C总线,I2C总线控制器通过串行数据线(SDA)和串行时钟(SCL)线在连接到总线的器件间传递信息。每个器件都有一个唯一的地址(无论是微控制器——MCU、LCD控制器、存储器或键盘接口),而且都可以作为一个发送器和一个接收器(由器件的功能决定),而且都可以作为一个发送器或接收器(由器件的功能决定)。
I2C控制器支持以下功能:
兼容I2C与SMBUS总线
频率支持到400kHz
支持7位和10位寻址模式
1. 驱动代码
drivers/i2c/busses/i2c-hobot.c # I2C驱动代码源文件
inlcude/linux/i2c-hobot.h # I2C驱动代码头文件
(1). 内核配置位置
CONFIG_I2C_HOBOT
(2). 内核DTS节点配置
X3芯片最大支持6路i2c总线,dts配置如下所示。
/* arch/arm64/boot/dts/hobot/hobot-xj3.dtsi */
i2c0: i2c@0xA5009000 {
compatible = "hobot,hobot-i2c";
reg = <0 0xA5009000 0 0x100>;
interrupt-parent = <&gic>;
interrupts = <0 38 4>;
clocks = <&i2c0_mclk>;
clock-names = "i2c_mclk";
bus-speed = <400000>;
resets = <&rst 0x50 10>;
reset-names = "i2c0";
status = "disabled";
pinctrl-names = "default";
pinctrl-0 = <&i2c0_func>;
};
备注: hobot-xj3.dtsi中的节点主要声明一些寄存器、中断的resource,均为soc共有特性,和具体电路板无关,一般情况下不用修改。
2. I2C使用
对于I2C的使用说明在Linux Kernel的Documentation/i2c下有详细的说明,本文主要列出X3J3 I2C驱动接口特殊的部分。
(1). Kernel Space
X3J3 I2C驱动在Kernel Space下提供了可以设置I2C传输频率的接口,使用方法如下:
#include <linux/i2c-hobot.h>...{ struct client_request *client_data = (struct client_request *)(client->adapter->algo_data); ... client_data->client_req_freq = 100000; //设置I2C传输频率为100k ret = i2c_transfer(client->adapter, request, ARRAY_SIZE(request)); ...}
需要注意的是,如果目标传输频率和默认频率不一致,那么在每次I2C传输前,都需要设置目标频率,即频率更改只对单次传输生效,这样设计也是为了保证某个驱动调用I2C驱动更改频率并传输不会对其它驱动造成影响,有关代码在i2c-hobot.c中的实现如下:
/* 检查是否需要更改频率,如果是,按照目标频率进行设置 */
static void recal_clk_div(struct hobot_i2c_dev *dev){
u32 clk_freq = 0;
int temp_div = 0;
struct client_request *client_req;
client_req = (struct client_request *)dev->adapter.algo_data;
clk_freq = clk_get_rate(dev->clk);
if (client_req->client_req_freq != 0) {
temp_div = DIV_ROUND_UP(clk_freq, client_req->client_req_freq) - 1;
} else {
temp_div = DIV_ROUND_UP(clk_freq, dev->default_trans_freq) - 1;
}
dev->clkdiv = DIV_ROUND_UP(temp_div, 8) - 1;
if (dev->clkdiv > I2C_MAX_DIV) {
dev_warn(dev->dev, "clkdiv too large, set to 255");
dev->clkdiv = I2C_MAX_DIV;
}}/* reset I2C 频率为默认频率 */
static void reset_client_freq(struct hobot_i2c_dev *dev){
struct client_request *client_req;
client_req = (struct client_request *)dev->adapter.algo_data;
client_req->client_req_freq = 0;}/* I2C master_xfer 函数 */
static int hobot_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num){
...
recal_clk_div(dev);
... /* I2C transfer */
reset_client_freq(dev);
...}
(2). User Space
通常,I2C设备由内核驱动程序控制,但也可以从用户态访问总线上的所有设备,通过/dev/i2c-%d接口来访问,Kernel下面的Documentation/i2c/dev-interface文档里有详细的介绍。
频率设置
查看i2C-N的频率,以i2c-0为例
root@x3dvbx3-hynix1G-2666:~# cat /sys/bus/i2c/devices/i2c-0/speed400000
设置i2c-N的频率,以i2c-0为例
root@x3dvbx3-hynix1G-2666:~# echo 100000 > /sys/bus/i2c/devices/i2c-0/speed
root@x3dvbx3-hynix1G-2666:~# cat /sys/bus/i2c/devices/i2c-0/speed100000
和Kernel Space下设置I2C频率只针对单次传输有效不同,User Space下设置I2C频率是持久有效的,谨慎使用!
- |
- +1 赞 0
- 收藏
- 评论 0
本文由孟高祥提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关研发服务和供应服务
相关推荐
地平线旭日X3系列智能芯片开发经验资料汇总
旭日X3 是地平线针对 AIoT 场景,推出的新一代低功耗、高性能的智能芯片;集成了地平线最先进的伯努利2.0 架构引擎( BPU® )。包含 X3M 和 X3E 两颗芯片,X3M 主要面向 8M 智能前视市场和边缘计算,提供 5TOPS 算力;X3E 主要面向 5M 智能前视市场,提供 3TOPS 算力。
【经验】地平线X3M芯片通过软件调节降低功耗的三种方法
地平线X3M SoC芯片包含4个53核,主频1.2Ghz,还有2个BPU核,主频1GHz,算力最高5Tops,在处理负责图像逻辑的情况下,需要对功耗进行必要的控制,保证芯片能正常工作。下面是三种通过软件调节降低芯片功耗的三种方法。
【经验】地平线X3M SoC芯片烧录efuse的方法
地平线X3M SoC的efuse的主要目的是自动识别不同厂商的DDR以及DDR类型。现在的DDR频率默认是3200,有些DDR的最高频率为2666,不烧写efuse,频率变为3200会影响启动。
【应用】地平线AI SoC芯片X3ME00IBGTMB-H用于3D相机,集成四核Cortex A53 CPU
3D相机应用领域越来越广泛,除了常见的3D影片之外,还可以应用于物流自动化、机器人视觉、障碍检测等方面。3D相机是有两个镜头的,分别是用于拍摄场景和测量自身与场景内物体之间的距离。镜头获取信息需要一个强大芯片来处理,本文介绍一款SOC可用于3D相机上。
AI加速边缘计算,聚焦AIOT芯片,NPU SOC,离线语音MCU,高算力智能模组等
世强硬创联合地平线,阿普奇,启英泰伦,美格智能,普林芯驰,唯创知音,九芯电子,芯闻,VINKO,MERRY带来AI新产品,聚焦AIOT芯片,NPU SOC,离线语音MCU,高算力智能模组等,加速边缘计算。
【应用】地平线AI SoC芯片X3M助力智能停车场系统设计,可实现车牌识别、车流量检测等功能,算力可达5Tops
现在,随着智能芯片、算法的技术发展,方便快捷、稳定可靠的非接触式智能停车设备已走进大大小小的城市,成为当今停车场设备的主流。地平线推出的X3M系列AI SoC芯片,可应用于停车场的智能识别设备,用来检测施工车辆的车牌、类别,并可实现计算车流量的功能。
地平线提出MAPS评测方法,重新定义芯片AI性能
地平线作为边缘AI芯片领导者,长期致力于AI芯片的软硬件研发和商业落地工作。此次提出MAPS芯片AI性能评测方法,为行业提供一种在峰值算力之外,从“快”和“准”两个维度帮助用户理解芯片AI性能的角度。
【应用】可提供5TOPS的算力的智能芯片X3ME00IBGTMB-H成功用于智能割草机器人设计,具有强大的视频处理能力
地平线针对AIoT场景,推出的新一代低功耗、高性能的智能芯片X3M非常适用于智能割草机器人的开发,客户评估相关资料后觉得不错,产品开发进度也已经到小批量试产了。
地平线推出突破性能天花板的8MP前视感知方案,高效灵活地进行多类AI任务处理并实现实时检测与精准识别
地平线Mono系列是目前唯一实现前装量产的国产单目视觉ADAS方案,累计斩获十余款车型定点,Mono3 也成为全球首个量产级8MP前视感知方案。面向ADAS的规模化落地,地平线坚持定位Tier-2,通过提供征程芯片开放平台,持续以软硬协同。
好算法更要配好用的芯片——基于LSS范式的BEV感知算法优化部署详解
本文通过对LSS范式的BEV多任务模型在地平线征程5上量化部署的优化,使得模型在该计算方案上用远低于1%的量化精度损失,得到latency为8.21ms的部署性能,同时,通过LSS范式的BEV模型的部署经验,可以推广到基于该范式的BEV模型的优化中,以便更好的在端侧部署。
【应用】地平线AI SOC芯片X3M系列助力边缘计算盒子应用,算力可达5Tops
本文将介绍地平线X3M系列AI SOC芯片,可应用于边缘计算盒子,实现视觉部分的算法。镜头模组将采集到的信息传送给X3M芯片,芯片通过算法,实现视觉部分的识别,如人脸识别,手势识别,火焰识别的动作,然后将信息通过接口进行传输。
星纪元ES上市,地平线征程3标配打造智能轿车新标杆
Mono 3是地平线基于征程3芯片,面向L2及以上ADAS市场推出的8MP单目前视感知方案。作为支持800万像素前视一体机形态的超低功耗方案,Mono 3方案凭借软硬结合下的极致能效表现,帮助车企以更短周期、更低成本,实现了更高配置与更强性能的智驾功能
基于双核贝叶斯架构的地平线征程®5车规级AI芯片,专为高等级自动驾驶而生
地平线可提供基于征程5,集全场景自动驾驶、多模人机交互和车内外联动于一体的 Horizon SuperDrive® 全场景整车智能解决方案,能够帮助客户和合作伙伴打造更具智能化、人性化的人车共驾新体验。
长安启源A05耀目上市,地平线征程®2助力探索数智出行新方式
10月20日,长安启源旗下第二款车型——“数智电驱超省家轿”长安启源A05正式上市。智驾配置方面,A05高配款(145 Max版本)搭载了基于地平线征程®2芯片的福瑞泰克ODIN数智底座解决方案,实现L2级ADAS智能驾驶功能,助力更多用户开启数智汽车新生活,享受舒适、安全的日常出行。
电子商城
现货市场
服务
Ignion可支持多协议、宽频段的物联网天线方案设计,协议:Wi-Fi、Bluetooth、UWB、Lora、Zigbee、2G、3G、4G、5G、CBRS、GNSS、GSM、LTE-M、NB-IoT等,频段范围:400MHz~10600MHz。
最小起订量: 2500 提交需求>
提供语音芯片、MP3芯片、录音芯片、音频蓝牙芯片等IC定制,语音时长:40秒~3小时(外挂flash),可以外挂TF卡或U盘扩容。
最小起订量: 1pcs 提交需求>
登录 | 立即注册
提交评论