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功能的 ...
随机推荐
- Flask 蓝图(Blueprint)
蓝图使用起来就像应用当中的子应用一样,可以有自己的模板,静态目录,有自己的视图函数和URL规则,蓝图之间互相不影响.但是它们又属于应用中,可以共享应用的配置.对于大型应用来说,我们可以通过添加蓝图来扩 ...
- Something about SeekingJob---TelInterview(电话面试)
昨天和今天分别收到两次电话面试,有一点小小感悟,遂注之. 作为一枚还未毕业的大三狗来说,我在想,找个实习真的是西天取金,必定要先经历九九八十一难吗(伤心)?所以在这里整理了电话面试遇到的问题: 集合框 ...
- Spark性能优化总结
1. 避免重复加载RDD 比如一份从HDFS中加载的数据 val rdd1 = sc.textFile("hdfs://url:port/test.txt"),这个test.txt ...
- 原生JavaScript实现页面回到顶部的功能
/*如果想实现点击一个按钮让滚动条回到最顶部的功能,首先可能就会想到它是从底部位置移动到顶部的位置 它是一个运动的过程,只要知道当前位置(current Position)和想要到达的位置(targe ...
- SpringCloud的注解:汇总篇
使用注解之前要开启自动扫描功能,如下配置中base-package为需要扫描的包(含子包): 1 <context:component-scan base-package="cn.te ...
- Jetty入门(1-2)eclipse集成jetty插件并发布运行应用
一.eclipse集成jetty插件 1.从市场安装jetty插件 2.使用jetty插件发布应用和配置运行环境 debug配置默认共用上述run配置 3.使用jetty插件启动运行和停止运行选中的应 ...
- Django--ORM基本操作
一.字段 AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bigint自增列,必须填入参数 pr ...
- UVA-10714 Ants---蚂蚁模拟
题目链接: https://vjudge.net/problem/UVA-10714 题目大意: 给你一个长为L厘米的木棍在上面有n只蚂蚁,蚂蚁的爬行时间均为1厘米/秒,两只蚂蚁先遇会立即调转方向,调 ...
- POJ1017 Packets---贪心
题目链接: https://vjudge.net/problem/POJ-1017 题目大意: 公司共有底面面积为1*1.2*2.3*3.4*4.5*5.6*6,高度同为H的六种产品,现在需要用最少的 ...
- SQL Server 2014 HADR_DATABASE_WAIT_FOR_TRANSITION_TO_VERSIONING 等待
最近有发现SAP 的MES系统上了AlwaysOn后辅助节点发现无法查询的情况,例如在辅助节点上执行: SELECT TOP 0 * FROM TABLE1; 语句执行正常SELECT TOP 1* ...