標(biāo)題: stm32與hmi串口屏通信調(diào)試詳解與源程序分享 [打印本頁(yè)]
作者: 逐夢(mèng)SHENG 時(shí)間: 2020-10-25 20:40
標(biāo)題: stm32與hmi串口屏通信調(diào)試詳解與源程序分享
關(guān)于陶晶池串口屏與 STM32F103 芯片的通信小工程
拿到串口屏,可能很多人都通過(guò)視頻(本文件夾下”網(wǎng)絡(luò)資料.txt”文件)搞懂了如何用上位 機(jī)下載程序。但空有表面花架卻始終搞不懂它與各芯片之間是如何通過(guò)串口通信的。下面我 將為大家介紹它的通信規(guī)則。芯片以市場(chǎng)上用的最多的 STM32F103 為例。
一.準(zhǔn)備工作:
前提:確定是陶晶池 USART HMI 串口屏,不確定可以對(duì)照屏幕編號(hào)百度或者對(duì)照淘寶網(wǎng)上 的圖片看一下;安裝上位機(jī)(壓縮包里有);學(xué)會(huì)上位機(jī)的使用。
51hei.png (78.59 KB, 下載次數(shù): 94)
下載附件
2020-10-26 03:51 上傳
51hei.png (39.17 KB, 下載次數(shù): 92)
下載附件
2020-10-26 03:51 上傳
1.首先先搞懂如何用上位機(jī)給串口屏編輯屏幕的界面、下載程序以及用上位機(jī)軟件給屏幕發(fā) 送指令。(具體請(qǐng)看視頻,網(wǎng)址在“網(wǎng)絡(luò)資料.txt”中有。特別是調(diào)試時(shí)發(fā)送的指令這一塊。 指令集在壓縮包“USARTHMI 屏幕資料.rar”里的“串口 HMI 指令集.pdf”
注意
2.如果下載時(shí)串口屏型號(hào)與例程型號(hào)不一致,可選擇“設(shè)備 ID”修改(與“調(diào)試”同一行
的最右邊按鈕),但前提是是陶晶池 USART HMI 串口屏。
二.例程講解 例程說(shuō)明:
此例程由 ADC 實(shí)驗(yàn)改編而來(lái),采集電壓值顯示?梢酝ㄟ^(guò) TFT 液晶屏和串口屏數(shù)值進(jìn)行比 較。
ADC 用的是引腳 PA1,串口屏的串口輸出用的是 USART3:PB10(TX) PB11(RX)(引腳是對(duì)應(yīng) STM32F103ZET6 芯片的,如果是 STM32F1 其它型號(hào)的芯片則需要在程序中自行修改引腳)。 本例程主要講解上位機(jī)指令在程序中如何實(shí)現(xiàn),從而達(dá)到程序指令與上位機(jī)調(diào)試指令一樣的 效果。

1.編輯上位機(jī)。 在上位機(jī)上編輯自己想要的外觀(guān)、指令數(shù)值輸出口(如該例程的“n0,n1,n2,t2,t3”,即可以 修改的部分)等。
2.學(xué)會(huì)用調(diào)試窗口給串口屏發(fā)送指令,可以參照視頻,還可以參照文件“串口 HMI 指令集.pdf”。 只有這個(gè)會(huì)用了才能進(jìn)行下一步。
51hei.png (43.85 KB, 下載次數(shù): 111)
下載附件
2020-10-26 03:52 上傳
3.接下來(lái)看例程。打開(kāi)我寫(xiě)的陶晶池串口程序,在例程中我將數(shù)據(jù)發(fā)送指令單獨(dú)用放在了函
數(shù)“hmi.c”“hmi.h”中。主函數(shù)中直接調(diào)用那兩個(gè)函數(shù)(數(shù)值發(fā)送函數(shù)和字符串發(fā)送函數(shù)) 就能實(shí)現(xiàn)給串口屏發(fā)送數(shù)據(jù)了。功能和上位機(jī)調(diào)試發(fā)送的指令是一樣的。
4.在函數(shù)“hmi.c”中我已經(jīng)說(shuō)明了函數(shù)各參數(shù)的含義?傮w思路是將上位機(jī)上的一條指令拆
成兩部分-指令和數(shù)據(jù)。先發(fā)指令,再發(fā)數(shù)據(jù)。例如:將上位機(jī)上的調(diào)試指令“n0.val=2”拆 成指令“n0.val=”和數(shù)據(jù)“2”。后帶的只是它們的長(zhǎng)度“l(fā)en”或位數(shù)“l(fā)en2”。
5.接下來(lái)是以“數(shù)值發(fā)送函數(shù)”為例的詳解,字符串發(fā)送也是一樣的。
代碼行 40:函數(shù)名(串口,指令,指令長(zhǎng)度,數(shù)據(jù),數(shù)據(jù)長(zhǎng)度) 該函數(shù)的指令一般是“n_.val=”,指令長(zhǎng)度是 7,具體是改哪個(gè)的值要與上位機(jī)
上設(shè)置的一致。 數(shù)據(jù)是自己想填入的值。如下面上位機(jī)上的數(shù)值“2”,數(shù)值位數(shù)“1” 如果要實(shí)現(xiàn)下圖所示上位機(jī)指令只需在主函數(shù)中調(diào)用函數(shù)
HMI_SendNum(USART3,"n0.val=",7,2,1);
51hei.png (73.51 KB, 下載次數(shù): 78)
下載附件
2020-10-26 03:53 上傳
代碼行 42-47:指令發(fā)送。
由于串口需要一個(gè)一個(gè)字符發(fā)送數(shù)據(jù),所以我將“data[t]”(即函數(shù)中的“u8 *data”
或例程中的“n0.val=”)拆分成了單個(gè)字母一個(gè)一個(gè)發(fā)送給串口
代碼行 48-54:數(shù)據(jù)發(fā)送。 將多位數(shù)的數(shù)值也拆分成單個(gè)數(shù)值一個(gè)一個(gè)發(fā)送。要注意的是所有的發(fā)送都是以
ASCII 碼(單個(gè)字符)的形式發(fā)送的,所以數(shù)值要加字符‘0’。由于數(shù)值無(wú)法顯示數(shù)字前位 零,所以我將例程的“電壓值”部分拆成了四個(gè)單個(gè)數(shù)值顯示
代碼行 56-65:結(jié)束符發(fā)送。
這是陶晶池串口屏的數(shù)據(jù)發(fā)送格式。在文檔“串口 HMI 指令集.pdf”中有重點(diǎn)提到。
5.字符串發(fā)送指令是類(lèi)似的,在此不予贅述。主函數(shù)中只要在使能串口后調(diào)用該函數(shù)就能使
用了。

結(jié)束語(yǔ):由于是例程,所以就只編寫(xiě)了兩個(gè)函數(shù)。如果您還想調(diào)用其他函數(shù)可以自行查看文 檔“串口HMI 指令集.pdf”,先用上位機(jī)調(diào)試一遍,成功后再在程序上編寫(xiě)添加相應(yīng)程序, 通信方式和編碼方式都是一樣的。
stm32
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "hmi.h"
u8 dat[] = "add 1,0,9 0xff,0xff,0xff";
int t=0;
u8 date[] = {0xff,0xff,0xff};
int main(void)
{
delay_init(); //延時(shí)函數(shù)初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置中斷優(yōu)先級(jí)分組為組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
uart_init(9600); //串口初始化為115200
uart3_init(9600);
LED_Init(); //LED端口初始化
while(1)
{
for(t=0;t<56;t++)
{
while(USART_GetFlagStatus(USART3,USART_FLAG_TC)!=SET);
USART_SendData(USART3,dat[t]);
}
// HMI_SendNum(USART3,"n0.val=",0,2,4);
// HMI_SendNum(USART3,"n1.val=",7,(int)2,1);
// HMI_SendNum(USART3,"n2.val=",7,((int)2)/100,1);
// HMI_SendNum(USART3,"n3.val=",7,(((int)2)/10)%10,1);
// HMI_SendNum(USART3,"n4.val=",7,((int)2)%10,1);
//
// HMI_SendText(USART3,"t2.txt=",7,"此處用以文本測(cè)試",16);
LED0=!LED0;
delay_ms(250);
}
}
注意:串口屏用的開(kāi)發(fā)軟件自行搜索。
全部資料51hei下載地址:
自寫(xiě)的與STM32F1通信程序.7z
(469.13 KB, 下載次數(shù): 207)
2020-10-26 03:33 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
自寫(xiě)例程詳解.pdf
(468.24 KB, 下載次數(shù): 113)
2020-10-25 20:36 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
320240例.rar
(269.18 KB, 下載次數(shù): 81)
2020-10-25 20:41 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者: FrankTai 時(shí)間: 2021-6-3 09:17
謝謝,請(qǐng)問(wèn)串口屏用的開(kāi)發(fā)軟件名稱(chēng)?
作者: omikeai 時(shí)間: 2021-9-9 20:21
無(wú)法使用
作者: 1759817440 時(shí)間: 2022-2-18 11:21
正在學(xué)習(xí)HMI的通訊,謝謝
作者: weizuokai1996 時(shí)間: 2022-2-24 12:12
陶晶池3.2寸停產(chǎn)了,只能換3.5,工作量很大
作者: LuMgBr 時(shí)間: 2022-11-29 22:56
HMI_Pow()函數(shù)是怎么定義的?
作者: 710863338 時(shí)間: 2024-12-19 19:00
USART-HMI串口屏與STM32相互通訊實(shí)例
作者: reking8 時(shí)間: 2025-1-6 04:07
西瓜視頻上有個(gè)叫澄泉的博主有發(fā)布的視頻,很詳細(xì)
作者: quchuangzao 時(shí)間: 2025-1-6 09:50
正在學(xué)習(xí)串口屏的使用,這個(gè)很有用,先從點(diǎn)燈開(kāi)始吧
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |