999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于AVR單片機串行口的研究

2013-10-08 03:04:12黃劍波
中國科技信息 2013年19期

黃劍波

安徽理工大學電氣與信息工程學院,安徽 淮南 232001

引言

ATmega128為基于AVR RISC結構的8位低功耗CMO S微處理器。由于其先進的指令集以及單周期指令執(zhí)行時間,ATmega128的數(shù)據(jù)吞吐率高達1MIPS/MHz,從而減緩系統(tǒng)在功耗和處理速度之間的矛盾。我們研究的對象主要是基于ATmega128的綜合開發(fā)系統(tǒng),研究內(nèi)容包括TWI接口與AT24C01的通信功能實現(xiàn),USART接口與PC的通信功能實現(xiàn),SPI接口控制相關數(shù)碼管的數(shù)據(jù)顯示的功能實現(xiàn)。

1 串行口功能概述

1.1 SPI接口概述

SPI總線是由MOTOROLA公司提出的一種同步串行外設接口。本次研究的開發(fā)板采用的是4根信號線,即兩條控制信號線 (低電平有效)和SCLK以及兩條數(shù)據(jù)信號線SDI和SDO。

通過將需要的從機的 引腳拉低,主機啟動一次通訊過程。主機和從機將需要發(fā)送的數(shù)據(jù)放入相應的移位寄存器。主機在SCK引腳上產(chǎn)生時鐘脈沖以交換數(shù)據(jù)。主機通過將從機的 拉高實現(xiàn)與從機的同步。

1.2 兩線串行接口TWI

TWI協(xié)議允許系統(tǒng)設計者只用兩根雙向傳輸線就可以將128個不同的設備互連到一起。這兩根線一是時鐘SCL,一是數(shù)據(jù)SDA。外部硬件只需要兩個上拉電阻,每根線上一個。所有連接到總線上的設備都有自己的地址。TWI 協(xié)議解決了總線仲裁的問題。

TWI總線進行數(shù)據(jù)傳輸時,SDA線上的數(shù)據(jù)必須在時鐘的高電平周期保持穩(wěn)定。數(shù)據(jù)線的高或低電平狀態(tài)只有在SCL線的時鐘信號時低電平時才能改變。

TWI總線協(xié)議規(guī)定,在SCL線是高電平時,SDA線從高電平向低電平切換表示其實條件;當SCL是高電平時,SDA線由低電平向高電平切換表示停止條件。

發(fā)送到SDA線上的每個字節(jié)必須是8位。每次傳輸可以發(fā)送的字節(jié)數(shù)量不受限制,每個字節(jié)后跟一個響應位(ACK)。首先傳輸?shù)氖菙?shù)據(jù)的最高位。

1.3 通用同步和異步串行接收和轉發(fā)器 USART

USART分為了三個主要部分:時鐘發(fā)生器,發(fā)送器和接收器。控制寄存器由三個單元共享。時鐘發(fā)生器包括同步從機操作用來與外部輸入時鐘進行同步的邏輯,以及波特率發(fā)生器。XCK ( 發(fā)送器時鐘)引腳用于同步發(fā)送模式。發(fā)送器包括單個寫緩沖器,串行移位寄存器,奇偶發(fā)生器以及處理不同的幀格式所需的控制邏輯。寫緩沖器可以保持連續(xù)發(fā)送數(shù)據(jù)而不會在數(shù)據(jù)幀之間引入延遲。由于接收器具有時鐘和數(shù)據(jù)恢復單元,它是USART 模塊中最復雜的。恢復單元用于異步數(shù)據(jù)的接收。除了恢復單元,接收器還包括奇偶校驗,控制邏輯,移位寄存器和兩個接收緩沖器UDR。接收器支持與發(fā)送器相同的幀格式,而且可以檢測幀錯誤,數(shù)據(jù)過速和奇偶校驗錯誤。

2 功能實現(xiàn)

2.1 TWI串口通信模塊的功能實現(xiàn)

對于TWI串口來說,它所要實現(xiàn)的功能就是對AT24C01進行訪問,包括對指定單元寫入內(nèi)容0xaa,并將該單元內(nèi)容讀取。

(1)TWI通信初始化

在這一部分,我們采用了“twi_init(void)”函數(shù)以實現(xiàn)TWI通信的初始化。函數(shù)具體實現(xiàn)是首先對TWI控制寄存器——TWCR進行設置,將其所有比特位置為0,以禁止TWI。在這之后,對TWI比特率寄存器——TWBR設置比特率,設置為01100100.然后將TWI狀態(tài)寄存器——TWSR的所有的比特位置為0,其目的主要是令TWSR的后三位比特位為0,選擇不分頻,和系統(tǒng)鐘保持一致。然后通過對TWI(從機)地址寄存器——TWAR賦值以設置從機地址。最后,再將TWCR寄存器的TWEN比特位——TWI使能位置位,啟動TWI。

(2)TWI通信開始

在這一部分,我們采用了“TWIstart(void)”函數(shù)以實現(xiàn)TWI通信的開始。函數(shù)實現(xiàn)的功能就是發(fā)送幀格式中的START信號。函數(shù)具體實現(xiàn)是首先將TWCR寄存器的TWEN,TWSTA,TWINT置為1,發(fā)送START信號。這里需要注意的是TWINT的特殊,TWINT標志的清零必須通過軟件寫“1”來完成,只要這一位被清零,TWI立即開始工作。然后用“while (!(TWCR & (1<

(3)TWI寫數(shù)據(jù)

這一部分當中,我們采用了“unsigned char TWIwt(unsigned char data)”函數(shù)實現(xiàn)TWI寫數(shù)據(jù)。我們需要進行兩步操作:將數(shù)據(jù)裝入TWDR寄存器,啟動數(shù)據(jù)發(fā)送;等待TWINT置位。ATmega128向AT24C01寫入一個字節(jié)的數(shù)據(jù),數(shù)據(jù)類型可以包括從機地址,AT24C01的地址單元,寫入地址單元的內(nèi)容。函數(shù)具體實現(xiàn)是首先將數(shù)據(jù)裝入到TWDR寄存器,然后將TWINT清零,啟動發(fā)送數(shù)據(jù),并且用“while (!(TWCR & (1<

(4)TWI讀數(shù)據(jù)

同寫數(shù)據(jù)類似的,我們采用了“unsigned char TWIrd(void)”函數(shù)實現(xiàn)TWI讀數(shù)據(jù)。處理器從AT24C01某個地址單元讀取數(shù)據(jù)。首先將TWCR寄存器的TWEN,TWEA,TWINT置為1,TWEA標志控制應答脈沖的產(chǎn)生,在主機/ 從機接收模式下接收到一個字節(jié)的數(shù)據(jù)時接口發(fā)出ACK脈沖。在等待TWINT置位后完成數(shù)據(jù)的讀取。

(5)TWI停止

本部分我們運用了“T W I s t o p(v o i d)”函數(shù)完成TWI串口通信停止。通過將TWCR寄存器的TWEN,TWSTO,TWINT置為1,發(fā)送STOP 信號。在寫入值時 TWINT 位要置位,這非常重要。給TWINT寫"1”清除此標志。TWCR寄存器中的TWINT置位期間TWI不會啟動任何操作。一旦TWINT清零,TWI啟動STOP信號的傳送。注意TWINT在STOP狀態(tài)發(fā)送后不會置位。

TWI的寫操作和讀操作的流程圖分別如下圖1,圖2所示:

圖1 AT24C01寫流程圖

圖2 AT24C01讀流程圖

2.2 USART串口通信模塊的功能實現(xiàn)

ATmega128具有兩個USART,USART0和USART1。本次我使用的是USART0。USART的硬件圖如下所示:

圖3 USART串口連接圖

在USART0的初始化實現(xiàn)了對波特率9600,8位數(shù)據(jù)位,一位停止位,無校驗位等要求的設定。數(shù)據(jù)位是8位,所以USART端口發(fā)送數(shù)據(jù)的方式是按字節(jié)發(fā)送。

USART0端口的數(shù)據(jù)發(fā)送有查詢方式和中斷方式兩種,這里我們采用了查詢方式。數(shù)據(jù)發(fā)送結束標志有“USART發(fā)送結束”和“USART數(shù)據(jù)寄存器空”兩種,我們采用的是“USART數(shù)據(jù)寄存器空”。這兩種結束標志的區(qū)別主要體現(xiàn)在發(fā)送緩沖器(UDRn)中的數(shù)據(jù)是否被送出,在數(shù)據(jù)沒有被送出的情況下,不能使用“USART發(fā)送結束”標志。

USART0端口的數(shù)據(jù)發(fā)送我們采用了異步方式。

2.3 SPI串口通信模塊的功能實現(xiàn)

SPI與74HC595的硬件連接如下圖所示

圖4 SPI串口連接圖

由上圖我們可以看到處理器A T m e g a 1 2 8的S P I串口通信中的 接到7 4 H C 5 9 5口的R C L K口,ATmega128的SPI串口通信中的SCK接到74HC595口的SRCLK,ATmega128的SPI串口通信中的MOSI接到74HC595口的SER,處理器ATmega128的SPI串口通信中的MISO接到74HC595口的SRCLR上。PC7接到使能口上。本次課題串口通信中只實現(xiàn)主出從入。

(1)SPI初始化

這一部分當中,我們采用了“spi_init(void)”完成SPI的初始化。通過對端口B數(shù)據(jù)方向寄存器DDRB賦值,將MOSI,SCK,SS設置為輸出,之后對SPI控制寄存器——SPCR賦值,使能SPI,選擇主機模式,并且設置傳送速度。

(2)SPI主機發(fā)送數(shù)據(jù)

“SPI_MasterTransmit(char Data)” 可以完成SPI主機發(fā)送數(shù)據(jù)的操作。將數(shù)據(jù)寫入SPI數(shù)據(jù)寄存器——SPDR,串行發(fā)送結束后,SPIF置位。

2.4 數(shù)碼管顯示模塊功能實現(xiàn)

(1)HC595初始化

我們采用“void HC_595_init(void)”將HC595初始化。主要需要完成 的方向和值的設置。首先將 設置為輸出,賦值為1以禁止其啟動。初始化PORTB的值使得數(shù)碼管的選通全部禁止,并將SPI的主從同步信號設置為高電平。之后調(diào)用SPI的初始化程序,最后將數(shù)碼管的顯示數(shù)據(jù)設為16即不顯示。

(2)HC595寫數(shù)據(jù)

送數(shù)據(jù)的操作比較簡單,主要通過調(diào)用函數(shù)實現(xiàn)。首先通過調(diào)用函數(shù)設置 的值以啟動從機SPI通信,然后調(diào)用SPI主機發(fā)送數(shù)據(jù)函數(shù)“SPI_MasterTransmit(char Data)”,最后調(diào)用函數(shù)將PB0( )設置為1,恢復到初始狀態(tài)。

(3)HC595顯示整形數(shù)據(jù)

這部分函數(shù)主要實現(xiàn)的功能是待顯示數(shù)據(jù)通過處理后,分別將百位,十位,個位存儲在相應的單元中。在程序中,存儲單元指的是數(shù)組Seg7_Led_Buf[]。

(4)HC595刷新顯示

這部分函數(shù)主要實現(xiàn)的功能:4個數(shù)碼管依次選通顯示相應數(shù)值,顯示的數(shù)值通過查表,通過SPI接口發(fā)送。由于刷新顯示程序的運行時間比較短,可以保證數(shù)碼管的穩(wěn)定顯示。

3 結語

本次研究運用編程實現(xiàn)處理器通過串行接口與外設之間的聯(lián)系。顯示結果表明處理器與外設之間通信狀況良好,顯示延遲小,數(shù)據(jù)準確,對于運用此系統(tǒng)進行后續(xù)的開發(fā)具有重要的意義。

[1]馬潮. AVR單片機嵌入式系統(tǒng)原理與應用實踐[M]. 第一版.北京:北京航空航天大學出版社,2007

[2]金鐘夫. AVR ATmega128單片機C程序設計與實踐[M]. 第一版.北京: 北京航空航天大學出版社,2008

[3]朱飛,楊平. AVR單片機C語言開發(fā)入門與典型實例[M]. 第一版.北京:人民郵電出版社,2010

主站蜘蛛池模板: 国产精品主播| 日韩精品中文字幕一区三区| 激情综合五月网| 中文字幕亚洲乱码熟女1区2区| 九九九精品视频| 久久国产精品夜色| 国产理论一区| 欧美天堂在线| 谁有在线观看日韩亚洲最新视频| 国产欧美另类| 欧美区一区二区三| 国产精品女人呻吟在线观看| 亚洲精品中文字幕无乱码| 在线免费亚洲无码视频| 国产特级毛片aaaaaa| 国产男女免费完整版视频| 成人毛片免费观看| 亚洲欧美综合另类图片小说区| 成人av专区精品无码国产| 97在线观看视频免费| 国产午夜人做人免费视频| 大香网伊人久久综合网2020| 成人在线不卡| 欧美日韩导航| 久久黄色一级片| 国产精品所毛片视频| 色成人综合| 日韩专区欧美| 中文字幕人成人乱码亚洲电影| 亚洲第一中文字幕| 亚洲二三区| 国产国产人成免费视频77777| 亚洲中文字幕23页在线| 国产精品亚洲一区二区在线观看| 老司国产精品视频| 欧美国产成人在线| AV不卡国产在线观看| 国产日韩丝袜一二三区| 全裸无码专区| 99re热精品视频中文字幕不卡| 欧美色图久久| 亚洲黄网在线| 国产在线91在线电影| 国产成人亚洲精品无码电影| 中国精品久久| 国产极品粉嫩小泬免费看| 国产福利免费视频| 国产高清在线观看91精品| 色综合a怡红院怡红院首页| 国产成人免费手机在线观看视频| 午夜国产大片免费观看| 亚洲免费福利视频| 日本日韩欧美| 亚洲无线国产观看| 在线精品亚洲一区二区古装| 国产精品无码AⅤ在线观看播放| 国产成年女人特黄特色大片免费| 日本91在线| 国内熟女少妇一线天| 亚洲天堂精品视频| av无码久久精品| 天天摸夜夜操| 国内精品小视频福利网址| 日本一区二区不卡视频| 秋霞午夜国产精品成人片| 中文字幕日韩久久综合影院| 一本一本大道香蕉久在线播放| 亚洲精品视频免费观看| 欧美一级在线播放| 国产农村精品一级毛片视频| 亚洲不卡网| 欧美日在线观看| 久久精品最新免费国产成人| 亚洲国产成人精品一二区| 日韩欧美国产三级| 福利在线不卡| V一区无码内射国产| 国产一级精品毛片基地| 一级一级特黄女人精品毛片| 中文精品久久久久国产网址| 免费看黄片一区二区三区| 久久国产av麻豆|