基于nRF905的LED屏無線通信設(shè)計(jì)
2.3 基于狀態(tài)機(jī)的嵌入式軟件設(shè)計(jì)
2.3.1 系統(tǒng)初始化
系統(tǒng)初始化主要包括:端口、串口、SPI總線、無線芯片、定時(shí)器和鏈表。狀態(tài)機(jī)的初始化包括:初始狀態(tài)、各個(gè)狀態(tài)的初始條件等。根據(jù)數(shù)據(jù)發(fā)送和接收的流程,設(shè)計(jì)狀態(tài)機(jī)的5種狀態(tài):待機(jī)狀態(tài)ST_STAND_BY;串口接收狀態(tài)(PC端)ST_UART_RECV;無線接收狀態(tài)(LED屏端)ST_WAVE_RECV;串口等待狀態(tài)(LED屏端)ST_UART_WAIT;無線等待狀態(tài)(PC端)ST_WAVE_WAIT。
2.3.2 狀態(tài)機(jī)的狀態(tài)觸發(fā)與轉(zhuǎn)換
上位機(jī)在中斷中接收PC機(jī)發(fā)送的控制數(shù)據(jù),存儲(chǔ)在循環(huán)鏈表中,通過無線芯片分包發(fā)送;上位機(jī)查詢無線芯片接收回復(fù)數(shù)據(jù),通過串口發(fā)給PC機(jī)上的控制軟件;上位機(jī)狀態(tài)觸發(fā)與轉(zhuǎn)換關(guān)系如圖4所示。下位機(jī)查詢接收無線模塊發(fā)送的數(shù)據(jù),通過串口轉(zhuǎn)發(fā)給LED屏控制卡;LED屏控制卡的回復(fù)數(shù)據(jù),下位機(jī)在中斷中接收,通過無線發(fā)送;下位機(jī)狀態(tài)觸發(fā)與轉(zhuǎn)換關(guān)系如圖5所示。圖4和圖5共同完成1次數(shù)據(jù)應(yīng)答。
2.3.3 定時(shí)器的數(shù)據(jù)收發(fā)檢測(cè)
(1)串口接收數(shù)據(jù)完的檢測(cè)。串口的數(shù)據(jù)接收是在中斷中完成的,因此在中斷中對(duì)定時(shí)器置數(shù),中斷外面減數(shù)。波特率為9 600b/s時(shí),中斷間隔小于1 ms。設(shè)置定時(shí)器的時(shí)長(zhǎng)1.5 ms,如果超過此時(shí)長(zhǎng),則意味著串口數(shù)據(jù)接收完成。
(2)無線發(fā)送接收數(shù)據(jù)的檢測(cè)。嵌入式程序中多處用到無線收發(fā)數(shù)據(jù)的定時(shí)器檢測(cè),根據(jù)應(yīng)用場(chǎng)合,選擇定時(shí)器的時(shí)長(zhǎng)。
3 結(jié)語
本文對(duì)采用芯片nRF905進(jìn)行LED屏的無線通信進(jìn)行了論證,從通信速率和功耗兩個(gè)方面分析了技術(shù)可行性,設(shè)計(jì)了串口通信協(xié)議、數(shù)據(jù)包協(xié)議和無線通信協(xié)議、論述了基于狀態(tài)機(jī)的嵌入式軟件設(shè)計(jì),實(shí)現(xiàn)了系統(tǒng)功能。
評(píng)論