IPQ4028开启I2C功能
0 概述
IPQ4028是一款集约式4核心ARM7 SOC芯片,内嵌独立双频WiFi子系统,offload式,支持MU-MIMO,最高支持1.2Gbps。标准的官方Demo方案中,IPQ4019开启了I2C功能,但IPQ4028/4018等未启用。
2 启用方法
qcom-ipq40xx.dtsi文件中定义了2个I2C接口:i2c0和i2c1,所以我们无需更改此文件,仅需要更改子板的dtsi文件即可。
1 修改dtsi文件
在qcom-ipq40xx-ap.dk01.1.dtsi中(IPQ4028子方案用这份dtsi),在@soc域,基于“wps_pins”定义,增加一份“i2c_0_pins”定义,基于datasheet文档,其pins需要固定为"gpio58"和"gpio59"(建议硬件不要改这2个gpio,否则要改动N多地方,且不一定能成功);function固定为“blsp_i2c0”。
再参考qcom-ipq40xx-ap.dk04.1.dtsi中的“i2c_0: i2c@78b7000”定义,将此段的内容全拷贝到qcom-ipq40xx-ap.dk01.1.dtsi中“usb2: usb2@6000000”定义的下边,然后s删除“i2c_0”中具体从设备定义。如果是复杂的I2C从设备,则这里要添加与你的目标从设备相匹配的定义。
2 开启驱动
make menuconfig ->"Kernel modules"->"I2C support",将“kmod-i2c-core”,“kmod-i2c-algo-bit”,“kmod-i2c-gpio”和“kmod-i2c-gpio-custom”选中进内核;
make kernel_menuconfig->"Device Drivers"->"I2C support"->"I2C Hardware Bus support"链中,"I2C support"和"I2C_MSM_V2"选中进内核。
3 测试代码
到http://blog.csdn.net/zjy900507/article/details/78838404拷贝此热心人士的I2C测试代码,利用现有的交叉编译工具链,独立编译为i2ctest即可,该i2ctest可直接在IPQ4028硬件平台上运行。
3 硬件修改
将IPQ4028的gpio58,59割出或引出来后,可以直接飞线到I2C从设备Demo板的SCL和SDA上,利用i2ctest程序直接进行控制;如果是从设备已直接贴到AP的PCBA上,则需要确认从设备IC的SCL和SDA引脚已被同一个电源线拉高(从事射频开发硬件工程师不一定会关注这些细节,所以一定要自己检测是否拉高到3.3V-5.0V间;同时,建议I2C从设备的VCC引脚不要与SCL/SDA共用同一条电源线,也不要将SCL和SDA分布在2条电源线上。后者也许是个案问题,我这边调试的时候,硬件工程师开始的时候将SCL脚拉高到VCC脚,SDA脚拉高到另一个电源线,死活不通;后来更换了一块板子,将SCL/SDA拉高到同一个电源线,且与VCC脚分开,就一切都正常了。可能硬件工程师有不同的理解,在用模拟器控制从设备Demo板成功,但却始终控制不了同一PCBA上的从设备时,可以找另一个硬件工程师,让他按本文建议,重新飞下线,肯定是个不错的调试方法)。
4 配套测试工具
到X宝上买一个USB式的逻辑分析仪,大概百元以内即可。因为示波器你只能看到大概波形,而逻辑分析仪可以更直观,特别是它具有I2C控制器功能,可以直接控制从设备,可以对抓到的信号进行I2C解码,非常好用。也许你的从设备供应商会不断强调示波器的好处,你只要能抓到正确的波形,就是用一个百元以内的软示波器就足够了。
5 验证
在固件编译完后,烧录到硬件平台上,可以看到/dev/i2c-0,则表明固件是正常的;然后上载i2ctest工具到设备上,试着写从设备的寄存器、读从设备的寄存器,如果逻辑仪上显示波形正确,则一切正常;将所有控制寄存器都写完,就可以看到从设备的正常反应了;反之,如果AP设备的串口出现NACK或ERROR字样,则表明I2C总线、从设备或I2c与从设备间通信出了问题。
一旦出现问题,建议用逻辑分析仪所自带的I2C控制器对从设备直接控制,确认从设备没有问题后再通过i2ctest进行联合调试。最常见的问题是:
1)从设备损坏;2)未正常上拉;3)VCC电压异常波动;4)从设备地址错误。
这里要强调一下,抓包i2c-msm-v2驱动时,会发现从设备的地址比datasheet所述左移了1bit,这个是正常的。如果你将从设备地址右移1bit以便这里的打印地址与datasheet的保持一致,那么就肯定会得到NACK提示。
6 其它
我已经在此硬件平台上利用ET6326 IC成功调出了3色呼吸灯。呼吸灯效果虽然你可以用GPIO-PWM式调出,但增加一个专门的IC来负责LED,可以做出更稳定、且不耗费主机性能。同时,基于此I2C总线,我们可以增加温感、湿感以及PM2.5传感器,从而扩展WiFi 设备的功能。
感谢ET6236供应商、研发厂家的大力协助。若您需要用到呼吸灯效果,建议采用ET6236或该公司的其它IC,主要是技术支持非常好。
IPQ4028开启I2C功能的更多相关文章
- Android开启OTG功能/USB Host API功能
Android USB 模式简介 设备模式 当计算机或其他USB主机需要连接安卓设备时,此时安卓设备是作为"USB设备"角色的,在计算机上显示为 USB 外设.现在的安卓设备已经被 ...
- PHP开启cURL功能
PHP开启cURL功能 在php.ini中开启 确定php扩展目录下有php_curl.dll类库 在php.int中找到扩展库所在目录 判断目录下是否有php_curl.dll 没有的话去搜索下载 ...
- mysql开启全文索引功能
注意:全文检索模块需要mysql开启全文索引功能,开启方法:修改mysql配置文件:window服务器为my.ini,linux服务器为my.cnf,在 [mysqld] 后面加入一行“ft_min_ ...
- CDC ->> 在某个SQL Server中开启CDC功能
USE AdventureWorks;GO--开启某个数据库的CDC功能EXEC sys.sp_cdc_enable_db;GO--is_cdc_enabled栏位为1代表开启CDC功能了SELECT ...
- apache 开启压缩功能
apache如何开启压缩功能. 1,首先先确认是安装deflatte模块.如果未安装,可以重新编译apache添加参数--enable-deflate=shared ,或者扩展安装deflate模块, ...
- MySQL 5.6 从库开启 crash-safe 功能
原文:Enabling crash-safe slaves with MySQL 5.6 可以对从库进行配置 crash-safe 功能是 MySQL 5.6 关于复制的一个重大改进.然而,我们注意到 ...
- PHP语言开发微信公众平台(订阅号)之开启基本功能及获得可用的服务器地址(2)
1.开启群发功能(单击功能菜单里的"群发功能",并在右侧页面中点击"同意以上声明") 2.(1)在开启开发者模式之前需要完善个人资料(完成头像上传即可) (2) ...
- Apache开启压缩功能
起源 在一般的web服务器中,都会开启压缩功能,也就是deflate或者是gzip的压缩. 开启压缩功能主要的目的是为了减少传输的带宽,从而当服务器响应给客户端的时候,会大大减少传输的数据,代价就是在 ...
- 无线渗透开启WPS功能的路由器
首先关闭网络服务 service network-manager stop wps一般可在10-20小时可以爆破开,攻击难度较低,有一些厂家的无线路由甚至无法关闭WPS功能. 开始侦听开启wps功能的 ...
随机推荐
- Python format 格式化函数
str.format() 格式化字符串的函数 str.format(),它增强了字符串格式化的功能. 基本语法是通过 {} 和 : 来代替以前的 % format 函数可以接受不限个参数,位置可以不按 ...
- Gson序列化对象如何忽略字段
Gson序列化对象如何忽略字段 Gson版本 2.8.2 梗概 用注解@Expose(serialize = false, deserialize = false)在类的成员上以告诉Gson 跳过本字 ...
- LeetCode & Q38-Count and Say-Easy
String Description: The count-and-say sequence is the sequence of integers with the first five terms ...
- Pyhon之Django中的Form组件
Pyhon之Django中的Form组件 新手上路 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面 ...
- C#实现导出Excel
这段时间用到了导出Excel的功能,这个功能还是比较常用的,我常用的有两个方法,现在整理一下,方便以后查看. 一.实现DataTable数据导出到本地,需要自己传进去导出的路径. /// <su ...
- ASP.NET CORE系列【三】使用Entity Framework Core进行增删改查
身份验证 以前我们熟悉的web.config中配置的form验证,现在没有了.我们来看看在Core里面如何配置: 首先需要NuGet安装一个包:Microsoft.AspNetCore.Authent ...
- intelj idea中JRebel激活
1.下载激活软件 https://github.com/ilanyu/ReverseProxy/releases/tag/v1.0 我这边下载的是: 2.双击运行 3.idea中, 不出意外,应该就激 ...
- Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数
本章目录: 一.三元表达式.列表推导式.生成器表达式 二.递归调用和二分法 三.匿名函数 四.内置函数 ================================================ ...
- oracle11g导出表时会发现少表,空表导不出解决方案。
一:背景引入 oracle11g用exp命令导出数据库表时,有时会发现只导出了一部分表时而且不会报错,原因是有空表没有进行导出,之前一直没有找到方法于是用最笨的方法重新建这些空表,当然在我们实际当中表 ...
- git出现错误原因解释
原因,在pull下拉代码或者push之前,你本地还有代码没有进行commit. 引起下面的错误. 建议commit后先pull再看看有没有冲突在进行push. git.exe push --pro ...