標(biāo)題: 移植這個(gè)程序時(shí),除了修改I2C.h以外,還需要修改什么? [打印本頁(yè)]

作者: bjdhjy888    時(shí)間: 2022-8-8 08:47
標(biāo)題: 移植這個(gè)程序時(shí),除了修改I2C.h以外,還需要修改什么?
各位前輩好。
http://www.torrancerestoration.com/bbs/dpj-215528-1.html我下載了上面這個(gè)程序,運(yùn)行后,板子溫濕度數(shù)據(jù)一切正常,引腳是PB6, PB7
I2C.h文件:
#define SDA_GPIO    GPIO_Pin_7
#define SCL_GPIO    GPIO_Pin_6


我的新項(xiàng)目新增OLED顯示屏占用了引腳PB6, PB7,所以HDC1080的引腳我連接到了STM32的PB10, PB11
所以我修改了I2C.h文件的這里:
#define SDA_GPIO    GPIO_Pin_11
#define SCL_GPIO    GPIO_Pin_10
軟件其他地方我都沒有修改。
然后板子溫濕度數(shù)據(jù)在串口助手里就異常了,數(shù)據(jù)總是固定的:125度,100%濕度。


請(qǐng)問(wèn)是軟件調(diào)試問(wèn)題吧?那么還需要修改軟件哪里?除了I2C.h   
(這是我第一次移植程序,新手)

這是我下載的別人的程序(HDC1080.rar 未修改過(guò)):

這是我修改后的程序(HDC1080rev.rar 我修改過(guò)引腳):

這是現(xiàn)在的原理圖:
這是現(xiàn)在輸出的錯(cuò)誤數(shù)據(jù):

謝謝!

HDC1080rev.7z

186.84 KB, 下載次數(shù): 0

FW_HDC1080.7z

186.75 KB, 下載次數(shù): 0


作者: hhdsdy    時(shí)間: 2022-8-8 11:24
1:確認(rèn)你更改后才保存并編譯了嗎?
2:查看其它外圍是否使用了STM32的PB10、PB11,只要有1個(gè)引腳被占用,HDC1080的數(shù)據(jù)就無(wú)法被正確讀取。
作者: Hephaestus    時(shí)間: 2022-8-8 11:42
看了下,是純軟件模擬,沒有用到EXTI、IIC等peripherals,應(yīng)該沒問(wèn)題啊。用邏輯分析儀之類的工具檢查下波形吧。
作者: Y_G_G    時(shí)間: 2022-8-8 13:15
OLED和HDC1080是可以用一級(jí)IIC的,不需要兩個(gè)時(shí)鐘數(shù)據(jù)線的呀
而且,你要用兩組的話,你就得兩個(gè)IIC驅(qū)動(dòng)了
把SCL和SDA同時(shí)連接OLED和HDC1080就可以了
我就是這樣用的,OLED從機(jī)地址是0x78,HDC1080的從機(jī)地址是0x80
作者: bjdhjy888    時(shí)間: 2022-8-8 14:06
Y_G_G 發(fā)表于 2022-8-8 13:15
OLED和HDC1080是可以用一級(jí)IIC的,不需要兩個(gè)時(shí)鐘數(shù)據(jù)線的呀
而且,你要用兩組的話,你就得兩個(gè)IIC驅(qū)動(dòng)了
把 ...

“OLED從機(jī)地址是0x78,HDC1080的從機(jī)地址是0x80”

請(qǐng)問(wèn)具體修改代碼哪里呢?我沒有設(shè)置過(guò)從機(jī)地址。我怕改錯(cuò)了啊
作者: haiyang201    時(shí)間: 2022-8-8 14:06
PB10, PB11是不是I2C接口
作者: bjdhjy888    時(shí)間: 2022-8-8 14:07
Hephaestus 發(fā)表于 2022-8-8 11:42
看了下,是純軟件模擬,沒有用到EXTI、IIC等peripherals,應(yīng)該沒問(wèn)題啊。用邏輯分析儀之類的工具檢查下波形 ...

我用邏輯分析和示波器都測(cè)量過(guò)HDC1080的引腳。都是有波形的。
作者: bjdhjy888    時(shí)間: 2022-8-8 14:07
hhdsdy 發(fā)表于 2022-8-8 11:24
1:確認(rèn)你更改后才保存并編譯了嗎?
2:查看其它外圍是否使用了STM32的PB10、PB11,只要有1個(gè)引腳被占用, ...

是的,保存,編譯,JTAG下載到STM32。
PB10, PB11連接HDC1080,沒有連接其他
作者: zilihangjian    時(shí)間: 2022-8-8 16:21
你看下,PB10, PB11 有沒有被占用。
作者: zilihangjian    時(shí)間: 2022-8-8 16:30
查看PB10、PB11是否被占用,用示波器抓一下SCL波形是否正常,SDA 是否有數(shù)據(jù)波形。
作者: Y_G_G    時(shí)間: 2022-8-9 00:04
bjdhjy888 發(fā)表于 2022-8-8 14:06
“OLED從機(jī)地址是0x78,HDC1080的從機(jī)地址是0x80”

請(qǐng)問(wèn)具體修改代碼哪里呢?我沒有設(shè)置過(guò)從機(jī)地址。我 ...

沒有說(shuō)要改呀
只是告訴你而已了
現(xiàn)在都搞不明白你這問(wèn)題
1,你下載的原本的IIC引腳是PB10, PB11,原來(lái)帖子的就是這兩個(gè)IO
2,你上傳的工程引腳是PB6, PB7,那這個(gè)是你改過(guò)的還是什么?
3,你上傳的工程是可以正確顯示的溫度的還是不能正確顯示溫度的?
"我的新項(xiàng)目新增OLED顯示屏占用了引腳PB6, PB7,所以HDC1080的引腳我連接到了STM32的PB10, PB11"
你這是什么意思?意思是不是說(shuō)OLED你還要重新寫一個(gè)IIC,C文件?
你以前的那個(gè)可能正確顯示的SCL和SDA,就是這兩根線,可以同時(shí)控制OLED和HDC1080,你明白我意思沒有?
不要什么SDA_HDC,SDA_SSD1309了,就要一個(gè)就行了SDA
OLED的1腳,HDC1080的1腳,單片機(jī)的PB7,這三個(gè)接一塊,再不明白就沒法了
作者: bjdhjy888    時(shí)間: 2022-8-9 05:52
Y_G_G 發(fā)表于 2022-8-9 00:04
沒有說(shuō)要改呀
只是告訴你而已了
現(xiàn)在都搞不明白你這問(wèn)題

謝謝。我理解。我最早就是把2個(gè)設(shè)備連接到同一對(duì)引腳上。如圖:


我的問(wèn)題是:“OLED從機(jī)地址是0x78,HDC1080的從機(jī)地址是0x80”這句話,請(qǐng)問(wèn)代碼里怎么修改呢?軟件怎么知道“OLED從機(jī)地址是0x78,HDC1080的從機(jī)地址是0x80”呢?這個(gè)我還是不明白。
作者: bjdhjy888    時(shí)間: 2022-8-9 05:55
zilihangjian 發(fā)表于 2022-8-8 16:21
你看下,PB10, PB11 有沒有被占用。

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

波形是有的。傳感器工作正!,F(xiàn)在就是代碼讀不到傳感器的數(shù)據(jù),好像就是因?yàn)橐_變化的原因?qū)е碌摹?hr noshade size="2" width="100%" color="#808080"> 作者: bjdhjy888    時(shí)間: 2022-8-17 12:38
石沉大海了屬于是 木有下文了




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1