關于陶晶池串口屏與 STM32F103 芯片的通信小工程
拿到串口屏,可能很多人都通過視頻(本文件夾下”網絡資料.txt”文件)搞懂了如何用上位 機下載程序。但空有表面花架卻始終搞不懂它與各芯片之間是如何通過串口通信的。下面我 將為大家介紹它的通信規則。芯片以市場上用的最多的 STM32F103 為例。
一.準備工作: 前提:確定是陶晶池 USART HMI 串口屏,不確定可以對照屏幕編號百度或者對照淘寶網上 的圖片看一下;安裝上位機(壓縮包里有);學會上位機的使用。
51hei.png (78.59 KB, 下載次數: 94)
下載附件
2020-10-26 03:51 上傳
51hei.png (39.17 KB, 下載次數: 92)
下載附件
2020-10-26 03:51 上傳
1.首先先搞懂如何用上位機給串口屏編輯屏幕的界面、下載程序以及用上位機軟件給屏幕發 送指令。(具體請看視頻,網址在“網絡資料.txt”中有。特別是調試時發送的指令這一塊。 指令集在壓縮包“USARTHMI 屏幕資料.rar”里的“串口 HMI 指令集.pdf”
注意
2.如果下載時串口屏型號與例程型號不一致,可選擇“設備 ID”修改(與“調試”同一行
的最右邊按鈕),但前提是是陶晶池 USART HMI 串口屏。
二.例程講解 例程說明: 此例程由 ADC 實驗改編而來,采集電壓值顯示。可以通過 TFT 液晶屏和串口屏數值進行比 較。 ADC 用的是引腳 PA1,串口屏的串口輸出用的是 USART3:PB10(TX) PB11(RX)(引腳是對應 STM32F103ZET6 芯片的,如果是 STM32F1 其它型號的芯片則需要在程序中自行修改引腳)。 本例程主要講解上位機指令在程序中如何實現,從而達到程序指令與上位機調試指令一樣的 效果。
 1.編輯上位機。 在上位機上編輯自己想要的外觀、指令數值輸出口(如該例程的“n0,n1,n2,t2,t3”,即可以 修改的部分)等。
2.學會用調試窗口給串口屏發送指令,可以參照視頻,還可以參照文件“串口 HMI 指令集.pdf”。 只有這個會用了才能進行下一步。
51hei.png (43.85 KB, 下載次數: 111)
下載附件
2020-10-26 03:52 上傳
3.接下來看例程。打開我寫的陶晶池串口程序,在例程中我將數據發送指令單獨用放在了函 數“hmi.c”“hmi.h”中。主函數中直接調用那兩個函數(數值發送函數和字符串發送函數) 就能實現給串口屏發送數據了。功能和上位機調試發送的指令是一樣的。
4.在函數“hmi.c”中我已經說明了函數各參數的含義。總體思路是將上位機上的一條指令拆 成兩部分-指令和數據。先發指令,再發數據。例如:將上位機上的調試指令“n0.val=2”拆 成指令“n0.val=”和數據“2”。后帶的只是它們的長度“len”或位數“len2”。
5.接下來是以“數值發送函數”為例的詳解,字符串發送也是一樣的。
代碼行 40:函數名(串口,指令,指令長度,數據,數據長度) 該函數的指令一般是“n_.val=”,指令長度是 7,具體是改哪個的值要與上位機 上設置的一致。 數據是自己想填入的值。如下面上位機上的數值“2”,數值位數“1” 如果要實現下圖所示上位機指令只需在主函數中調用函數 HMI_SendNum(USART3,"n0.val=",7,2,1);
51hei.png (73.51 KB, 下載次數: 78)
下載附件
2020-10-26 03:53 上傳
代碼行 42-47:指令發送。 由于串口需要一個一個字符發送數據,所以我將“data[t]”(即函數中的“u8 *data” 或例程中的“n0.val=”)拆分成了單個字母一個一個發送給串口
代碼行 48-54:數據發送。 將多位數的數值也拆分成單個數值一個一個發送。要注意的是所有的發送都是以 ASCII 碼(單個字符)的形式發送的,所以數值要加字符‘0’。由于數值無法顯示數字前位 零,所以我將例程的“電壓值”部分拆成了四個單個數值顯示
代碼行 56-65:結束符發送。 這是陶晶池串口屏的數據發送格式。在文檔“串口 HMI 指令集.pdf”中有重點提到。
5.字符串發送指令是類似的,在此不予贅述。主函數中只要在使能串口后調用該函數就能使 用了。
 結束語:由于是例程,所以就只編寫了兩個函數。如果您還想調用其他函數可以自行查看文 檔“串口HMI 指令集.pdf”,先用上位機調試一遍,成功后再在程序上編寫添加相應程序, 通信方式和編碼方式都是一樣的。
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(); //延時函數初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級
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,"此處用以文本測試",16);
LED0=!LED0;
delay_ms(250);
}
}
注意:串口屏用的開發軟件自行搜索。
全部資料51hei下載地址:
自寫的與STM32F1通信程序.7z
(469.13 KB, 下載次數: 207)
2020-10-26 03:33 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
自寫例程詳解.pdf
(468.24 KB, 下載次數: 113)
2020-10-25 20:36 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
320240例.rar
(269.18 KB, 下載次數: 81)
2020-10-25 20:41 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|