串口打印打通后,剩下的就是驱动打通了,目前找到的设备的驱动,基本上都是非C语言的实现,需要转换成C语言的符合封装要求的驱动库。以前这部分都是靠人手撸代码编写,但现在不需要这么复杂了,直接把需求整理清晰,剩下的实现和初步验证交给大模型,我们做最后的最终验收和检查是否有不符合要求的点即可,大大降低了开发难度。
加速度传感器驱动适配
I2C接口配置

从板卡规格书上看,CN10接口上的PB6和PB7可以作为硬件I2C使用,因此就直接在cubemx2上把这两个脚配置成I2C口。修改起来也简单,直接在cubemx2的外设页面使能i2c1并将SCL和SDA分别初始化为对应的GPIO(PB6/PB7),使能后再把工作模式设为快速模式(400K)即可。
提示词整理
我直接给了这么些描述:
这个工程目前已经实现了串口打印和简单的gpio控制,并通过cubemx2打通了I2C接口(PB6/PB7),但项目需要的外设还没适配上,比如三轴加速度传感器(参考资料见E:\Users\user\Desktop\STM32C562\参考文件\三轴传感器资料,其中的实际代码为我需要使用的实际硬件对应的其他语言的实现),我需要你参考这份资料,编写一份该三轴加速度传感器的驱动文件,要求:驱动以注册方式实现(依赖的接口(I2C/SPI之类的总线,单位延时等具体实现)在初始化时通过回调函数的方式注册进去,后续使用时直接内部使用回调函数),帮忙看看如何实现
之后把这些内容交给codex后,codex就自动进行分析并给方案,我审核给意见,最终方案确认没问题后,通知按方案修改。
codex半个小时内就出了一版codex自测OK的代码,经过编译下载,最终确认功能符合要求,不过代码写的就差了点意思,但这次的目的并不是为了写可长期维护的代码,因此就不再花更多精力去琢磨代码怎么优化了,也不再去贴代码了(个人觉得codex写的太重,贴出来会让读的人理解费劲)。
最终硬件接线
最终效果
Hello EEPW LIS3DH ready: I2C1, addr=0x19, unit=mg LIS3DH: X=0 mg, Y=-84 mg, Z=1008 mg LIS3DH: X=12 mg, Y=-72 mg, Z=996 mg LIS3DH: X=12 mg, Y=-72 mg, Z=984 mg LIS3DH: X=12 mg, Y=-60 mg, Z=1008 mg LIS3DH: X=0 mg, Y=-72 mg, Z=1020 mg LIS3DH: X=0 mg, Y=-72 mg, Z=1008 mg LIS3DH: X=24 mg, Y=-84 mg, Z=1008 mg LIS3DH: X=48 mg, Y=-252 mg, Z=1272 mg LIS3DH: X=-312 mg, Y=-288 mg, Z=-852 mg LIS3DH: X=-360 mg, Y=-336 mg, Z=-828 mg LIS3DH: X=-444 mg, Y=-288 mg, Z=-636 mg LIS3DH: X=-348 mg, Y=-540 mg, Z=1068 mg LIS3DH: X=-192 mg, Y=-120 mg, Z=-612 mg LIS3DH: X=-696 mg, Y=-684 mg, Z=1068 mg LIS3DH: X=-276 mg, Y=780 mg, Z=420 mg LIS3DH: X=156 mg, Y=-720 mg, Z=696 mg LIS3DH: X=204 mg, Y=-576 mg, Z=864 mg LIS3DH: X=-348 mg, Y=-108 mg, Z=864 mg LIS3DH: X=-216 mg, Y=-216 mg, Z=876 mg LIS3DH: X=156 mg, Y=-108 mg, Z=996 mg LIS3DH: X=48 mg, Y=-60 mg, Z=1044 mg LIS3DH: X=12 mg, Y=48 mg, Z=996 mg LIS3DH: X=0 mg, Y=-72 mg, Z=1008 mg LIS3DH: X=24 mg, Y=-72 mg, Z=1044 mg LIS3DH: X=12 mg, Y=-96 mg, Z=996 mg LIS3DH: X=0 mg, Y=-48 mg, Z=996 mg LIS3DH: X=12 mg, Y=-72 mg, Z=1008 mg LIS3DH: X=12 mg, Y=-72 mg, Z=1020 mg LIS3DH: X=12 mg, Y=-96 mg, Z=1008 mg LIS3DH: X=12 mg, Y=-84 mg, Z=1020 mg
传感器平放时,z轴读到的加速度值接近重力加速度,而更换摆放角度,会发现只要是有一个轴在重力加速度方向附近,他的值就会在1G附近,说明数据已经正确读取
我要赚赏金
