标题: 移植这个程序时,除了修改I2C.h以外,还需要修改什么? [打印本页]

作者: bjdhjy888    时间: 2022-8-8 08:47
标题: 移植这个程序时,除了修改I2C.h以外,还需要修改什么?
各位前辈好。
http://www.51hei.com/bbs/dpj-215528-1.html我下载了上面这个程序,运行后,板子温湿度数据一切正常,引脚是PB6, PB7
I2C.h文件:
#define SDA_GPIO    GPIO_Pin_7
#define SCL_GPIO    GPIO_Pin_6


我的新项目新增OLED显示屏占用了引脚PB6, PB7,所以HDC1080的引脚我连接到了STM32的PB10, PB11
所以我修改了I2C.h文件的这里:
#define SDA_GPIO    GPIO_Pin_11
#define SCL_GPIO    GPIO_Pin_10
软件其他地方我都没有修改。
然后板子温湿度数据在串口助手里就异常了,数据总是固定的:125度,100%湿度。


请问是软件调试问题吧?那么还需要修改软件哪里?除了I2C.h   
(这是我第一次移植程序,新手)

这是我下载的别人的程序(HDC1080.rar 未修改过):

这是我修改后的程序(HDC1080rev.rar 我修改过引脚):

这是现在的原理图:
这是现在输出的错误数据:

谢谢!

HDC1080rev.7z

186.84 KB, 下载次数: 0

FW_HDC1080.7z

186.75 KB, 下载次数: 0


作者: hhdsdy    时间: 2022-8-8 11:24
1:确认你更改后才保存并编译了吗?
2:查看其它外围是否使用了STM32的PB10、PB11,只要有1个引脚被占用,HDC1080的数据就无法被正确读取。
作者: Hephaestus    时间: 2022-8-8 11:42
看了下,是纯软件模拟,没有用到EXTI、IIC等peripherals,应该没问题啊。用逻辑分析仪之类的工具检查下波形吧。
作者: Y_G_G    时间: 2022-8-8 13:15
OLED和HDC1080是可以用一级IIC的,不需要两个时钟数据线的呀
而且,你要用两组的话,你就得两个IIC驱动了
把SCL和SDA同时连接OLED和HDC1080就可以了
我就是这样用的,OLED从机地址是0x78,HDC1080的从机地址是0x80
作者: bjdhjy888    时间: 2022-8-8 14:06
Y_G_G 发表于 2022-8-8 13:15
OLED和HDC1080是可以用一级IIC的,不需要两个时钟数据线的呀
而且,你要用两组的话,你就得两个IIC驱动了
把 ...

“OLED从机地址是0x78,HDC1080的从机地址是0x80”

请问具体修改代码哪里呢?我没有设置过从机地址。我怕改错了啊
作者: haiyang201    时间: 2022-8-8 14:06
PB10, PB11是不是I2C接口
作者: bjdhjy888    时间: 2022-8-8 14:07
Hephaestus 发表于 2022-8-8 11:42
看了下,是纯软件模拟,没有用到EXTI、IIC等peripherals,应该没问题啊。用逻辑分析仪之类的工具检查下波形 ...

我用逻辑分析和示波器都测量过HDC1080的引脚。都是有波形的。
作者: bjdhjy888    时间: 2022-8-8 14:07
hhdsdy 发表于 2022-8-8 11:24
1:确认你更改后才保存并编译了吗?
2:查看其它外围是否使用了STM32的PB10、PB11,只要有1个引脚被占用, ...

是的,保存,编译,JTAG下载到STM32。
PB10, PB11连接HDC1080,没有连接其他
作者: zilihangjian    时间: 2022-8-8 16:21
你看下,PB10, PB11 有没有被占用。
作者: zilihangjian    时间: 2022-8-8 16:30
查看PB10、PB11是否被占用,用示波器抓一下SCL波形是否正常,SDA 是否有数据波形。
作者: Y_G_G    时间: 2022-8-9 00:04
bjdhjy888 发表于 2022-8-8 14:06
“OLED从机地址是0x78,HDC1080的从机地址是0x80”

请问具体修改代码哪里呢?我没有设置过从机地址。我 ...

没有说要改呀
只是告诉你而已了
现在都搞不明白你这问题
1,你下载的原本的IIC引脚是PB10, PB11,原来帖子的就是这两个IO
2,你上传的工程引脚是PB6, PB7,那这个是你改过的还是什么?
3,你上传的工程是可以正确显示的温度的还是不能正确显示温度的?
"我的新项目新增OLED显示屏占用了引脚PB6, PB7,所以HDC1080的引脚我连接到了STM32的PB10, PB11"
你这是什么意思?意思是不是说OLED你还要重新写一个IIC,C文件?
你以前的那个可能正确显示的SCL和SDA,就是这两根线,可以同时控制OLED和HDC1080,你明白我意思没有?
不要什么SDA_HDC,SDA_SSD1309了,就要一个就行了SDA
OLED的1脚,HDC1080的1脚,单片机的PB7,这三个接一块,再不明白就没法了
作者: bjdhjy888    时间: 2022-8-9 05:52
Y_G_G 发表于 2022-8-9 00:04
没有说要改呀
只是告诉你而已了
现在都搞不明白你这问题

谢谢。我理解。我最早就是把2个设备连接到同一对引脚上。如图:


我的问题是:“OLED从机地址是0x78,HDC1080的从机地址是0x80”这句话,请问代码里怎么修改呢?软件怎么知道“OLED从机地址是0x78,HDC1080的从机地址是0x80”呢?这个我还是不明白。
作者: bjdhjy888    时间: 2022-8-9 05:55
zilihangjian 发表于 2022-8-8 16:21
你看下,PB10, PB11 有没有被占用。

我在工程里搜了,没有其他地方有GPIO_Pin_10,GPIO_Pin_11的代码。所以没有被占用把?

波形是有的。传感器工作正常。现在就是代码读不到传感器的数据,好像就是因为引脚变化的原因导致的。
作者: bjdhjy888    时间: 2022-8-17 12:38
石沉大海了属于是 木有下文了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1