嵌入式技术william hill官网
直播中

河神大人

8年用户 1478经验值
擅长:电源/新能源
私信 关注
[问答]

怎么解决控制台输入sht3x probe i2c0 pd指令后卡住的问题?

sht3x软件包下载后,控制台输入sht3x probe i2c0 pd指令后卡住,i2c0是ok的,已经挂载了rtc
2.jpg
而且在RT studio工具里点亮模拟I2C的图标后,为啥deivers文件夹里面有I2C的文件
2.jpg

回帖(10)

mintsy

2023-3-6 09:50:27
应该还是I2C通信的问题,你定义BSP_USING_I2C0,以及I2C的管脚了吗?
不过我看了一下,GD的BSP应该是有问题的,主要如下:
1.工程目录下,drivers文件夹下是没有drv_soft_i2c.c文件的,SConscript文件中也没有添加该文件的选项;
2.在官方仓库中,GD32450的BSP中是有drv_soft_i2c.c文件的,而且SConscript文件中也有对应的选项;
建议:
1.可以在官方仓库下载drv_soft_i2C.c以及drv_soft_i2c.c文件,并放到工程目录下的drivers文件夹中。
2.同时修改一下drivers下的SConscript文件,参考下图添加语句,这样才能把软件模拟I2C的驱动添加进来能用。
3.另外要在board.h中定义BSP_USING_I2C0,以及I2C0的管脚.
上述几个步骤可以操作试一下,I2C0才是正常的。
2.jpg
举报

mintsy

2023-3-6 09:50:32
看了一下,原来下面这个旧的GD32450的BSP没有i2C的驱动,上边这个新的BSP增加了。应该是studio中的SDK还没有更新到最新的。
不过按照上面说的方法也可以用。
3.jpg


举报

河神大人

2023-3-6 09:50:57
我是MDK的project的,需要增加SHT3x的测温功能,想通过RT studio配置移植过来。
从网上下载了drv_soft_i2c.c,并且board.c也配置了BSP_USING_I2C0。
2.jpg
但是drv_soft_i2c.c报了几个错误
2.jpg
举报

mintsy

2023-3-6 09:51:06
这个应该是个bug了,drv_soft_i2c.h这个文件中有定义,但是定义有错误,你手动改一下
举报

河神大人

2023-3-6 09:51:26
已把4改成0,还是报了一些错误
2.jpg
错误如下:

2.jpg
举报

mintsy

2023-3-6 09:51:33
看一下你board.h中的BSP_USING_I2C0及其管脚是怎么定义的,是否GET_PIN 使用错误?参考如下:

#define BSP_USING_I2C0
#define BSP_I2C0_SCL_PIN GET_PIN(B, 5)
#define BSP_I2C0_SDA_PIN GET_PIN(B, 6)
举报

河神大人

2023-3-6 09:51:38
看着好像没问题
2.jpg
举报

mintsy

2023-3-6 09:51:45
看了一下,这个BSP并没有支持PIN设备驱动,所以GET_PIN函数是无法使用的。要用的话还得移植PIN设备驱动。
这个版本BSP应该是社区开发者贡献的,设备驱动不是很全,应该不再维护更新了。
建议直接换gd32这个文件夹下的bsp吧,这里是结合官方整理的相对规范,设备驱动也稍全些。
2.jpg
举报

河神大人

2023-3-6 09:52:08
好的,感谢,还个问题想请教一下:
或者有没有其他方法在这个老的BSP上添加SHT3X温湿度传感器?
举报

mintsy

2023-3-6 09:52:20
个人感觉并不麻烦,主要看你的功能都应用了那些驱动接口,如果所用到外设驱动两个版本BSP都支持的话,移植过来还是很快的,毕竟接口都是一样的,直接把你的应用层代码移植就好。
建议还是更换吧,不定你后边要增加的应用代码又用到了什么外设而这个BSP又不支持呢。长痛不如短痛
实在想用旧版本也可以的,目前就是I2C用到PIN设备驱动问题,你再把新的BSP中的PIN 设备驱动直接移植过来就好了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分