430之通用異步串口通信模塊
今天把同學(xué)的datasheet復(fù)印版本拿過來跟著視頻學(xué)的,突然間發(fā)現(xiàn)復(fù)印版本的datasheet好比電子檔的要好很多,給我個(gè)人的感覺吧,要掌握一門芯片,真的要去仔仔細(xì)細(xì)的看一下datasheet,靜下心來看,發(fā)現(xiàn)他和六級(jí)中科學(xué)類閱讀是一樣的,我在感到慶幸的同時(shí),還在感謝我高中的班主任,感謝他在高中的時(shí)候,英語學(xué)習(xí)對(duì)我的幫助,好了吐槽到這,進(jìn)入今天的正題~~~
異步通信的特點(diǎn):
1:可以是7位和8為數(shù)據(jù)字節(jié),能夠進(jìn)行奇偶校驗(yàn)
2:獨(dú)立的收發(fā)移位寄存器
3:發(fā)送數(shù)據(jù)的有獨(dú)立的接收和發(fā)送寄存器,注意是低位在前面
4:內(nèi)置空閑線路和地址通信協(xié)議
5:擁有起始位探測(cè),可以從低功耗模式中喚醒
6: 可編程的波特率發(fā)生器
7:錯(cuò)誤探測(cè)
8:獨(dú)立的收發(fā)中斷
其實(shí)這些功能:只需要這張圖就可以解決了,各個(gè)模塊的應(yīng)用,其實(shí)很容易懂的,下面來介紹一下
首先看標(biāo)志1:三個(gè)可以選擇的時(shí)鐘源ACLK,SMCLK,UCLK1,
進(jìn)去就是一個(gè)分頻器(標(biāo)志2),由于分頻器存在一定的誤差,舉個(gè)例子,就是學(xué)習(xí)51的時(shí)候,為了的到9600的波特率,不是片外的晶振必須是11.0592MHz 的晶振嗎,如果采用12M的就會(huì)有誤差,430為了克服這個(gè)問題,采用了分頻器得到整數(shù),小數(shù)部分通過一個(gè)小數(shù)點(diǎn)的邏輯電腦(多數(shù)表決得到)當(dāng)然誤差肯定也是存在的,但是430得到了進(jìn)一步的優(yōu)化
在進(jìn)去就要看上下兩部分圖中標(biāo)志是3,還有4,其中3是接收部分,4是發(fā)射部分,每個(gè)部分有移位寄存器,緩存器,還有接發(fā)收控制寄寄存器組成
最后在對(duì)每個(gè)部分進(jìn)行分析就可以了,關(guān)鍵是要看懂datasheet上的介紹,這張圖的了解這么多就可以了
430提供兩種多機(jī)通信方式:空閑線路通信模式,地址通信模式
其中空閑線路是以線路閑置的時(shí)間來判斷是數(shù)據(jù)位還是地址位,其中如果線路閑置了超過10個(gè)高電平的間隔,當(dāng)單片機(jī)再次接收到數(shù)據(jù)是,這把第一個(gè)數(shù)據(jù)當(dāng)作是地址位,后面的是緊跟的是數(shù)據(jù),如果沒有超過,這一直認(rèn)為是數(shù)據(jù)塊
地址通信模式的話,就是在數(shù)據(jù)中穿插了一個(gè)標(biāo)志位,其中當(dāng)標(biāo)志位是1的時(shí)候,單片機(jī)認(rèn)為這是地址,當(dāng)標(biāo)志位是0時(shí)則認(rèn)為是數(shù)據(jù)
之后便是430單片機(jī)提供的數(shù)據(jù)檢測(cè),比如幀錯(cuò)誤,奇偶校驗(yàn)錯(cuò)誤,重復(fù)接收錯(cuò)誤,斷開錯(cuò)誤,等等還有出現(xiàn)錯(cuò)誤是繼續(xù)送給cpu處理的設(shè)置,還是果斷拋棄,關(guān)鍵的標(biāo)志位要看具體的datasheet上的說明
之后便是USART的接收允許和中斷允許,也是需要看懂幾個(gè)圖就可以了
接收使能圖
首先看一下標(biāo)號(hào)1,這是單片機(jī)不允許接收的狀態(tài),這個(gè)時(shí)候,URXEx等于0,當(dāng)URXEx等于1的時(shí)候,單片機(jī)處于狀態(tài)2,這時(shí)候,如果給單片機(jī)發(fā)送任何一個(gè)數(shù)據(jù),都可以讓單片機(jī)處于狀態(tài)3,注意的是,單片機(jī)的URXEx是系統(tǒng)硬件清零,當(dāng)單片機(jī)完成狀態(tài)3,便會(huì)向cpu提供一個(gè)中斷的申請(qǐng)
同樣,發(fā)送狀態(tài)也是差不多,這里可以去參考datasheet了,筆者不做另外說明
430單片機(jī)的UART看懂這些,就可以看相關(guān)的寄存器操作了,但是學(xué)習(xí)寄存器的使用,光看懂是沒用的,要通過具體的編程,好了,今天就總結(jié)到這里





