完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
做嵌入式驱动开发,会使用逻辑分析仪是必不可少的技能。
什么情况需要使用逻辑分析仪 当你编写驱动与设备通信读写数据遇到问题时,可以用逻辑分析仪排除硬件问题,这样我们就可以安心找软件的bug了。 这里我以Kingst逻辑分析仪 LA1010型号为例,来说明。 连接硬件 逻辑分析仪相比示波器,体积优势明显,首先,你需要硬件工程师帮你把板子引出三根线SCL(时钟线) SDA(数据线) GND(接地)。 逻辑分析仪USB直连电脑供电,然后选择两个CH通道连上SCL和SDA,这里我把CH0连SCL,CH1连SDA,接地的线对应连上逻辑分析仪的GND即可。 逻辑分析仪软件设置 由逻辑分析仪厂家提供此软件 如图显示已连接,则说明软件工作正常 设置我们使用的通道,保存退出即可 添加协议解析器,选择i2c SDA和SCL选择正确 设置采样率和采样深度,提高采集时间有两个办法,一是提高采样深度,二是降低采样率 使用i2c tool工具发送命令 直接adb push 到板子上执行 检测系统上有几组i2c 命令:i2cdetect -l 可以看到目前板子上,有三组i2c是可用的 检测挂载在i2c上的器件 命令:i2cdetect -r -y 0 检测i2c0上的设备 可以看到0x70的地址上有一个设备,是我添加的温湿度传感器 第一种测试方法,使用i2ctransfer读取16位寄存器(重点) 执行这一步之前,我们先设置SCL为下降沿,然后点启动,软件会等待触发 adb shell 执行。/i2ctransfer -f -y 0 w2@0x70 0xef 0xc8 r1 触发(其中参数0为i2c0,w2表示写两个字节,@0x70为你的i2c设备(注意要7位地址),0xefc8 为验证传感器是否存在以及是否正确沟通的寄存器地址,详见温湿度寄存器手册) 如果采集时间太短可参考上诉办法,提高采集时间 如果硬件通信正常,我们把鼠标放到波形区域,按住ctrl键滑动鼠标滑轮,可以放大和缩小波形。我们不断缩小波形,会发现如下图形 再放大波形后可见,前一段为我发送0xefc8的命令,后一段为设备回复的ACK,值为0x08 在右侧协议解析中,也能清晰的看到wirte read的数据 第二种测试方法,使用i2cdump查看器件所有寄存器的值 i2cdump -f -y 0 0x70 (其中参数0为i2c0,0x70表示设备地址) 缩小波形,能看到大段内容 再放大波形,能看到大量这种write之后能收到read回复,说明硬件通信正常 能采集如上两种这样的数据,便说明硬件是ok的,如果我们编写的驱动获取不到数据,就要查看我们代码是否哪里有问题了。 注意:测试读取的寄存器地址不能直接用获取温湿度设备数据的寄存器,因为设备可能还没有使能,是无法获取到数据的,而0xefc8这种寄存器地址本身就是用于测试设备能否正常沟通,不需要使能设备。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1561 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1501 浏览 1 评论
933 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
665 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1555 浏览 2 评论
1847浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
609浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
503浏览 3评论
507浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
488浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 15:43 , Processed in 0.482333 second(s), Total 45, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号