




已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
實驗7 CC2530串口控制器編程本實驗完成時間:第8周、第9周一、實驗目的1、CC2530串口控制器的原理;2、掌握CC2530串口控制器的編程步驟;二、實驗任務 從PC機上的串口調(diào)試助手(超級終端)輸入的字符能夠發(fā)送給CC2530,CC2530再把所接收到的字符“原路”回傳給對方。 直觀的效果:當串口調(diào)試助手(超級終端)激活時,鍵盤上輸入的字符能夠在串口調(diào)試助手的窗口那個回顯。三、實驗原理 1、何謂超級終端和串口調(diào)試助手 超級終端:一個和uart串口相關(guān)聯(lián)的窗口應用程序。它能夠從uart串口上所接收到的字符顯示出來,同時當該窗口激活時能夠把鍵盤所鍵入的字符從串口發(fā)送出去。超級終端能夠從串口收發(fā)字符成功的前提是串口通信雙方所約定的收發(fā)格式一致。它和一般所說的串口調(diào)試助手類似,但有區(qū)別:超級終端不會以16進制的形式顯示所接收的字符編碼;串口調(diào)試助手不會把鍵盤輸入的字符實時從串口發(fā)送出去,需要點擊手動發(fā)送。串口調(diào)試助手:桌面上有串口聊天助手,如果不能打開,可以如圖1在S503的D盤/試驗箱資料光盤/工具軟件/串口工具和驅(qū)動/串口聊天助手,打開后如圖2所示。打開任意一個即可!圖1 串口聊天助手位置設置參數(shù)圖2 串口聊天助手界面圖2、實驗室GEC-CC2530開發(fā)板的uart串口接口(USB轉(zhuǎn)串口,紅色圈圈)如圖3:圖3 單片機開發(fā)板的USB轉(zhuǎn)串口該接口和cc2530所連接的電路圖如下:由該圖不難得知:P0_3作為串口的發(fā)送管腳;P0_2作為串口的接收管腳;P0_5、P0_4作為硬件流控用的,一定要注意,我們平時見到的串口的交叉線都只用到了收、發(fā)、地三根線,所以在串口設置是都禁止硬件流控!由此可見,GEC-CC2530所占的資源就是P0_3(發(fā)送管腳)、P0_2(接收管腳),更進一步結(jié)合CC230數(shù)據(jù)手冊的GPIO設備管腳映射表分析:可知:GEC-CC2530串口 P0_3(發(fā)送管腳)、P0_2(接收管腳)uart 03、cc2530串口uart編程步驟(1)總線初始化,相關(guān)SFR如下PERCFG P2DIR PxSEL UxCSR我們uart0位于P0位置當P0口管腳沖突是uart0優(yōu)先當P0_2 P0_3作為了uart0的收發(fā)管腳2、數(shù)據(jù)鏈路格式化(數(shù)據(jù)位、停止位、校驗位、波特率);UxUCR UxGCR UxBAUD波特率的計算:在CC2530的時鐘位高速時鐘位32M時,我們可以按照下表進行配置:3、讀寫串口收發(fā)寄存器 UxDBUF 、RX_BYTE(UxCSR的第2位) 、TX_BYTE(UxCSR的第1位) RX_BYTE:接收字節(jié)狀態(tài),0:沒有收到字節(jié);1:準備好接收字節(jié)TX_BYTE:傳送字節(jié)狀態(tài),0:字節(jié)沒有被傳送;1:字節(jié)準備被傳送我們讀取數(shù)據(jù)時,RX_BYTE置1,然后讀UxDBuf;我們發(fā)送數(shù)據(jù)時,TX_BYTE置1,且將準備傳送的字節(jié)寫入到UxDBUF;四、實驗步驟1、領(lǐng)取單片機開發(fā)板,編寫代碼,先編譯下載,如圖4下載時需要接下載器,下載好之后,斷開下載器和方口線,再將方口線直接接在單片機開發(fā)板的USB轉(zhuǎn)串口上如圖5,如果電源指示燈不亮,則將RST旁邊的撥碼開關(guān)打到OFF位置。撥碼開關(guān) 圖4 連接下載器 圖5 和PC機進行串口通信如圖5連接好之后,打開設備管理器,通過設備管理器中查看COM 口,查找自己是COM幾。一般方口線直接相連后,靜待20S就會出現(xiàn)設備。若直接將方口線接在單片機上,打開設備管理器發(fā)現(xiàn)出現(xiàn)如下圖6的?,則需要右鍵點擊問號更新安裝USB轉(zhuǎn)串口的驅(qū)動。此驅(qū)動需要下載:ftp/教學軟件/粵嵌zigbee USB轉(zhuǎn)串口/,解壓至當前文件夾下,右鍵更新驅(qū)動路徑為選擇剛剛解壓的文件:CH341SER。更新安裝驅(qū)動之后,出現(xiàn)如圖7所示,比剛才多了一個COM3,則我們現(xiàn)在就是COM3口。在串口助手上選擇COM3口。若不清楚自己剛才連上的是COM幾,斷開方口線,再重新連接方口線。打開串口調(diào)試助手,設置好COM口,和波特率即可; 圖6 沒有識別出USB轉(zhuǎn)串口 圖7 安裝驅(qū)動后 編程實現(xiàn):使用cc2530的串口0來和PC機通信,通信格式為:8位數(shù)據(jù)位、1位停止位、沒有奇偶校驗位、沒有流控、波特率為115200;(1)程序?qū)崿F(xiàn)在串口調(diào)試助手上每隔0.5秒顯示HELLO WORD?。?)程序?qū)崿F(xiàn)在串口調(diào)試助手上把鍵盤輸入的字符回顯出來2、 建立IAR工程,完善以下代碼以實現(xiàn)實驗任務:程序?qū)崿F(xiàn)在串口調(diào)試助手上大約每隔0.5秒顯示HELLO WORD!可參考課本P110,但不與課本上完全相同第一題:#include #define uint unsigned int#define uchar unsigned charvoid delay(uint);char Txdata= HELLO WORD! ;void set_clock_speed()/時鐘初始化/下面的代碼是把系統(tǒng)的高速時鐘設置為32M,請對為下三條句添加注釋 CLKCONCMD&=(16);/ while(CLKCONSTA&(16);/ CLKCONCMD&=0X07;/void delay(unsigned int count)/延時函數(shù) unsigned int i,j; for(i=0;icount;i+) for(j=0;j10000;j+) ; void uart0_init()/串口初始化:可參考課本P110,但不與課本上完全相同/補充代碼實現(xiàn)初始化:USART0選擇uart模式,管腳為P0(位置1),數(shù)據(jù)格式為8位數(shù)據(jù)位、1位停止位、沒有校驗位,波特率為115200,LSB發(fā)送模式,1為停止,0為起始 void main() set_clock_speed();/時鐘初始化 uart0_init();/串口初始化 while(1) int j; for(j = 0; Txdataj!=0; j+)/下面三句實現(xiàn)串口發(fā)送,補充下面代碼 U0DBUF = Txdataj; / 填充數(shù)據(jù)到串口數(shù)據(jù)寄存器 /通過測試TX_BYTE標志位是否為1等待字節(jié)發(fā)送完畢: / 將TX_BYTE標志位清零 /延時 3、 編譯鏈接程序后下載到cc2530板子上,驗證是否完成了顯示任務,修改代碼中的HELLO WORD!為HELLO WORD!r,編譯、下載,觀察運行結(jié)果;再修改成HELLO WORD!rn觀察運行結(jié)果; 方法: U0DBUF = Txdataj; while(UTX0IF = 0); UTX0IF = 0; 溫馨提示:上述代碼中實現(xiàn)串口發(fā)送的3句代碼可以換成以下方法,請測試并在課后多多思考: 以下內(nèi)容為第9周實驗內(nèi)容:4、 建立IAR工程,程序?qū)崿F(xiàn)在串口調(diào)試助手上把鍵盤輸入的字符回顯出來,完善以下代碼以實現(xiàn)實驗任務第二題:#include void set_clock_speed()/下面的代碼是把系統(tǒng)的高速時鐘設置為32M,請大家通過查看手冊嘗試自己來寫,不要抄襲 void uart0_init()/USART0選擇uart模式,管腳為P0,數(shù)據(jù)格式為8位數(shù)據(jù)位、1位停止位、沒有校驗位 /波特率為19200,LSB發(fā)送模式,1為停止,0為起始 /將串口0的位置選在P0口:PERCFG的第0位清0 /P0口的外設優(yōu)先級控制設為串口0優(yōu)先:P2DIR7:6清0 /P0口的2、3管腳設為外設工作方式 /USART0工作的UART模式,接收使能 /據(jù)格式為8位數(shù)據(jù)位、1位停止位、沒有校驗位 /波特率baud_e的選擇 /波特率設置 void uart0_send_byte(char tmp)/將字節(jié)tmp從串口0發(fā)送出去char uart0_receive_byte(void)/從串口0接收一個字節(jié)void main()/補充完整 char buf; set_clock_speed(); uart0_init(); while(1) buf=/從串口0接收一個字符到buf; /把接收到的字符又給串口0發(fā)送回去 5、 編譯鏈接程序后下載到cc2530板子上,驗證是否完成了任務;五、拓展實驗1.在上面的例子中我們定義了uart0_send_byte函數(shù)可以向串口發(fā)送一個字符,當然在此基礎(chǔ)上我們可以實現(xiàn)如何向串口發(fā)送一個字符串的函數(shù)。我們是否可以用c語言的標準IO函數(shù)printf呢?printf的強大的格式控制還是能夠給我?guī)砗艽蟮姆奖愕摹rintf最終會導致putchar的調(diào)用,所以我們只需要把putchar的輸出定向到串口就可以了。由于printf的運行消耗內(nèi)存較多,我們需要工程的缺省存儲模型做如下設置:在工程中添加如下代碼:#include _near_func int putchar(int c) uart0_send_byte(c); return c;然后你就可以在代碼中用printf輸出了!2.上述串口通信完成的同學,可以嘗試2位同學合作,A同學使用一臺電腦+單片機大板+下載線(不連接串口線),B同學使用一臺電腦+單片機大板+下載線(不連接串口線),將兩塊板子上的地線通過杜邦線相連,將A的TXD連接B的RXD,A同學給自己單片機寫發(fā)送數(shù)據(jù)0X55,B同學給自己單片機寫接收代碼,兩人波特率一致,當B 同學收到
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 職業(yè)病培訓大綱
- 少兒無人機課件
- 智慧生態(tài)農(nóng)業(yè)谷項目解決方案
- 非煤礦山安全生產(chǎn)知識題庫-單選題
- 濃密機培訓課件
- 無痛胃腸鏡檢查及護理
- 煤礦職工培訓
- 營業(yè)廳服務禮儀培訓
- 重度胎膜早剝護理
- 計劃調(diào)度具備哪些能力培訓
- 2025年臨床醫(yī)師定期考核必考復習題庫及答案(900題)
- 醫(yī)保藥械管理制度內(nèi)容
- 新聞、記者采編人員崗位職業(yè)技能資格基礎(chǔ)知識考試題及答案
- 憲法學與行政法考核試卷
- 山西民間美術(shù)(山西林業(yè)職業(yè)技術(shù)學院)知到智慧樹答案
- 健身房物業(yè)保潔及安保服務實施方案
- 檢察機關(guān)保密知識培訓
- 3D打印技術(shù)與應用知到智慧樹期末考試答案題庫2024年秋西北工業(yè)大學
- 《常州紅梅公園》課件
- 軟件正版化工作培訓
- Dahua大華7系報警柱快速操作手冊
評論
0/150
提交評論