本發(fā)明涉及一種uart擴(kuò)展芯片及實(shí)現(xiàn)方法,特別是一種將spi、i2c、uart和8位并口擴(kuò)展為多路高速uart的芯片。
背景技術(shù):
:隨著嵌入式微處理器技術(shù)的發(fā)展和嵌入式平臺(tái)功能的復(fù)雜化,嵌入式平臺(tái)需要搭載的外設(shè)越來越多,且絕大多數(shù)外設(shè)都是通過串口和嵌入式平臺(tái)相連接。由于嵌入式平臺(tái)本身的串口個(gè)數(shù)有限(通常一個(gè)嵌入式處理器本身具有2到3串口),如果外設(shè)眾多,那么我們需要把其他總線轉(zhuǎn)換為串口。目前串口擴(kuò)展的方式大體上有軟件模擬、選擇多串口cpu、或者是選擇總線轉(zhuǎn)換的專用串口擴(kuò)展芯片。軟件模擬的串口由于沒有硬件緩存,通常只能用于低速串口,且軟件模擬也會(huì)占用大量的系統(tǒng)資源;目前多串口cpu型號(hào)有限,這類型的cpu并不能滿足所有嵌入式設(shè)備平臺(tái),限制太大;總線轉(zhuǎn)換的專用串口擴(kuò)展芯片不受平臺(tái)限制,只要平臺(tái)總線匹配即可,且專用芯片有大容量fifo和專用邏輯處理單元,擴(kuò)展串口更加方便。技術(shù)實(shí)現(xiàn)要素:本發(fā)明要解決的技術(shù)問題是提供了一種uart擴(kuò)展芯片及實(shí)現(xiàn)方法,實(shí)現(xiàn)嵌入式微處理器搭載眾多高速外設(shè)的需求。本發(fā)明的技術(shù)方案如下:一種uart擴(kuò)展芯片及實(shí)現(xiàn)方法,包括:總線接口、主接口控制器、數(shù)據(jù)轉(zhuǎn)換器、內(nèi)部總線、模式控制接口、gpio控制邏輯、時(shí)鐘發(fā)生器、寄存器管理器、子串口收發(fā)器、子串口控制器和中斷控制器;所述主接口控制器包括spi控制邏輯、i2c控制邏輯、串口收發(fā)邏輯和并口總線控制邏輯,所述子串口收發(fā)器包括發(fā)送fifo、接收fifo、串口發(fā)送邏輯、串口接收邏輯和波特率發(fā)生器,所述子串口控制器包括子串口控制邏輯、子串口fifo控制邏輯、485控制邏輯、流量控制邏輯、子串口控制邏輯。所述總線接口通常連接到嵌入式微處理器的spi總線接口、i2c總線接口、串口、并口總線,在模式接口的控制下,把上述4中接口轉(zhuǎn)換為1到4個(gè)串口,同時(shí)在非并口總線模式下,也能轉(zhuǎn)換為多位gpio。所述總線接口一端連接到主接口控制器,另外一端通常連接到嵌入式微處理器的相應(yīng)總線上。所述主接口控制器包括spi控制邏輯、i2c控制邏輯、串口收發(fā)邏輯和并口總線控制邏輯,在模式控制接口的控制下,完成芯片和嵌入式微處理器信息交換。所述數(shù)據(jù)轉(zhuǎn)換器連接到主接口控制器和內(nèi)部總線。把主接口控制器收到的數(shù)據(jù)轉(zhuǎn)換為特殊的格式,并存入相應(yīng)的芯片寄存器,實(shí)現(xiàn)相應(yīng)的操作。所述內(nèi)部總線為芯片內(nèi)部數(shù)據(jù)交換的一個(gè)通道。所述gpio控制邏輯在非并口模式下有效,通過相應(yīng)寄存器來控制多個(gè)gpio。所述時(shí)鐘發(fā)生器為芯片提供統(tǒng)一的時(shí)鐘信號(hào)。所述子串口收發(fā)器包括發(fā)送fifo、接收fifo、串口發(fā)送邏輯、串口接收邏輯和波特率發(fā)生器;且每個(gè)子串口都有獨(dú)立的子串口收發(fā)器。所述子串口控制器包括子串口控制邏輯、子串口fifo控制邏輯、485控制邏輯、流量控制邏輯、子串口控制邏輯,且每個(gè)子串口都有獨(dú)立的子串口控制器。所述中斷控制器控制芯片的中斷觸發(fā)與產(chǎn)生中斷信號(hào)及中斷信號(hào)的檢測。所述寄存器管理器,管理芯片所有的內(nèi)部寄存器,芯片內(nèi)部寄存器分為全局寄存器、頁寄存器、子串口寄存器;其中頁寄存器和子串口寄存器為每個(gè)子串口獨(dú)立所有。所述全局寄存器包括全局子串口使能寄存器gena、全局子串口復(fù)位寄存器grst、全局主串口控制寄存器gmut、全局中斷寄存器gier、全局中斷標(biāo)志寄存器gifr、全局gpio中斷標(biāo)志寄存器gpint、全局gpio中斷使能寄存器gpien、全局gpio方向寄存器gpdir、全局gpio中斷模式寄存器高字節(jié)gpim1、全局gpio中斷模式寄存器低字節(jié)gpim0、全局gpio數(shù)據(jù)寄存器gpdat。全局寄存器的地址為6位,分別依次為000000、000001、000010、010000、010001、010010、100000、100001、100010、110000、110001;所述頁寄存器包括子串口頁控制寄存器spage,子串口頁寄存器的地址為xx0011,其中xx為00、01、10、11中的一個(gè),表示不同的子串口;子串口頁控制寄存器spage的值只能是0或者1;0表示在第0頁,1表示在第一頁;所述子串口寄存器分布在不同的頁上,通過子串口頁控制寄存器spage來控制,其中在第0頁上的寄存器包括子串口使能寄存器scr、子串口配置寄存器lcr、子串口fifo控制寄存器fcr、子串口中斷使能寄存器sier、子串口中斷標(biāo)志寄存器sifr、子串口發(fā)送fifo計(jì)數(shù)寄存器tfcnt、子串口接收fifo計(jì)數(shù)寄存器rfcnt、子串口fifo狀態(tài)寄存器fsr、子串口接收狀態(tài)寄存器lsr、子串口fifo數(shù)據(jù)寄存器fdat、子串口流量控制寄存器fwcr、子串口rs485控制寄存器rs485,這些寄存器的地址為xx0000到xx1111,其中xx為00、01、10、11表示不同的子串口;在第1頁上的寄存器包括子串口波特率配置寄存器高字節(jié)baud1、子串口波特率配置寄存器低字節(jié)baud0、子串口波特率配置寄存器小數(shù)部分pres、子串口接收fifo中斷觸發(fā)點(diǎn)配置寄存器rftl、子串口發(fā)送fifo中斷觸發(fā)點(diǎn)配置寄存器tftl、子串口fifo流控觸發(fā)點(diǎn)配置寄存器高字節(jié)fwth、子串口fifo流控觸發(fā)點(diǎn)配置寄存器低字節(jié)fwtl、子串口xon1寄存器xon1、子串口xoff1寄存器xoff1、rs485地址寄存器sadr、rs485地址使能寄存器saen、rs485rts控制寄存器rtsdly,這些寄存器的地址為xx0000到xx1111,其中xx為00、01、10、11表示不同的子串口;與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn):1、支持多種總線接口,如我們常用的spi總線、i2c總線、并口總線、串口等總線接口;芯片內(nèi)置總線控制邏輯和數(shù)據(jù)轉(zhuǎn)換器,可以實(shí)現(xiàn)不同總線之間的轉(zhuǎn)換。2、每個(gè)子串口都有獨(dú)立的大容量接收fifo和發(fā)送fifo,大容量的緩存空間有利于高速串口的擴(kuò)展。3、支持子串口單獨(dú)控制,每個(gè)子串口都有獨(dú)立的寄存器組用于控制子串口的時(shí)鐘、fifo、中斷系統(tǒng)、通信模式等。4、支持主uart的波特率自適應(yīng)和子串口波特率的任意設(shè)置。當(dāng)主接口為uart的時(shí)候,在芯片復(fù)位以后,cpu通過發(fā)送0x55給總線轉(zhuǎn)換芯片的主uart,總線轉(zhuǎn)換芯片的主uart通過接收0x55,并計(jì)算出此時(shí)0x55傳輸時(shí)的波特率,并把主uart鎖定到相同的波特率,以后按照鎖定的波特率通信。5、支持485功能,包括支持帶網(wǎng)絡(luò)地址的485模式和不帶網(wǎng)絡(luò)地址的485模式。6、支持spi、uart、i2c、并口多種總線傳輸協(xié)議。7、支持讀寫fifo協(xié)議,讀寫fifo協(xié)議是用于讀寫子串口收發(fā)緩存的專用傳輸協(xié)議,該協(xié)議在主接口是spi、uart、i2c是時(shí)有效。該傳輸協(xié)議大大加快了子串口和cpu之間的數(shù)據(jù)交換。8、支持獨(dú)立子串口中斷結(jié)構(gòu),包括:數(shù)據(jù)錯(cuò)誤中斷、fifo觸點(diǎn)中斷、超時(shí)中斷。9、支持gpio擴(kuò)展和gpio中斷擴(kuò)展。附圖說明圖1是本發(fā)明提供一種uart擴(kuò)展芯片及實(shí)現(xiàn)方法的原理框圖;圖2是本發(fā)明提供一種uart擴(kuò)展芯片及實(shí)現(xiàn)方法在spi總線模式下的連接框圖;圖3是本發(fā)明提供一種uart擴(kuò)展芯片及實(shí)現(xiàn)方法在spi總線模式下寫寄存器時(shí)序圖;圖4是本發(fā)明提供一種uart擴(kuò)展芯片及實(shí)現(xiàn)方法在spi總線模式下讀寄存器時(shí)序圖;圖5是本發(fā)明提供一種uart擴(kuò)展芯片及實(shí)現(xiàn)方法在spi總線模式下寫fifo時(shí)序圖;圖6是本發(fā)明提供一種uart擴(kuò)展芯片及實(shí)現(xiàn)方法在spi總線模式下讀fifo時(shí)序圖;圖7是本發(fā)明提供一種uart擴(kuò)展芯片及實(shí)現(xiàn)方法在uart模式下的連接框圖;圖8是本發(fā)明提供一種uart擴(kuò)展芯片及實(shí)現(xiàn)方法在uart模式下寫寄存器時(shí)序圖;圖9是本發(fā)明提供一種uart擴(kuò)展芯片及實(shí)現(xiàn)方法在uart模式下寫fifo時(shí)序圖;圖10是本發(fā)明提供一種uart擴(kuò)展芯片及實(shí)現(xiàn)方法在uart模式下讀寄存器時(shí)序圖;圖11是本發(fā)明提供一種uart擴(kuò)展芯片及實(shí)現(xiàn)方法在uart模式下讀fifo時(shí)序圖;圖12是本發(fā)明提供一種uart擴(kuò)展芯片及實(shí)現(xiàn)方法在i2c總線模式下連接框圖;圖13是本發(fā)明提供一種uart擴(kuò)展芯片及實(shí)現(xiàn)方法在i2c總線模式下寫寄存器時(shí)序圖;圖14是本發(fā)明提供一種uart擴(kuò)展芯片及實(shí)現(xiàn)方法在i2c總線模式下讀寄存器時(shí)序圖;圖15是本發(fā)明提供一種uart擴(kuò)展芯片及實(shí)現(xiàn)方法在i2c總線模式下寫fifo時(shí)序圖;圖16是本發(fā)明提供一種uart擴(kuò)展芯片及實(shí)現(xiàn)方法在i2c總線模式下讀fifo時(shí)序圖。具體實(shí)施方式為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式做詳細(xì)的說明。實(shí)施例1一種uart擴(kuò)展芯片及實(shí)現(xiàn)方法,包括:總線接口、主接口控制器、數(shù)據(jù)轉(zhuǎn)換器、內(nèi)部總線、模式控制接口、gpio控制邏輯、時(shí)鐘發(fā)生器、寄存器管理器、子串口收發(fā)器、子串口控制器和中斷控制器;所述主接口控制器包括spi控制邏輯、i2c控制邏輯、串口收發(fā)邏輯和并口總線控制邏輯,所述子串口收發(fā)器包括發(fā)送fifo、接收fifo、串口發(fā)送邏輯、串口接收邏輯和波特率發(fā)生器,所述子串口控制器包括子串口控制邏輯、子串口fifo控制邏輯、485控制邏輯、流量控制邏輯、子串口控制邏輯。所述總線接口通常連接到嵌入式微處理器的spi總線接口、i2c總線接口、串口、并口總線,在模式接口的控制下,把上述4中接口轉(zhuǎn)換為1到4個(gè)串口,同時(shí)在非并口總線模式下,也能轉(zhuǎn)換為多位gpio。所述總線接口一端連接到主接口控制器,另外一端通常連接到嵌入式微處理器的相應(yīng)總線上。所述主接口控制器包括spi控制邏輯、i2c控制邏輯、串口收發(fā)邏輯和并口總線控制邏輯,在模式控制接口的控制下,完成芯片和嵌入式微處理器信息交換。所述數(shù)據(jù)轉(zhuǎn)換器連接到主接口控制器和內(nèi)部總線。把主接口控制器收到的數(shù)據(jù)轉(zhuǎn)換為特殊的格式,并存入相應(yīng)的芯片寄存器,實(shí)現(xiàn)相應(yīng)的操作。所述內(nèi)部總線為芯片內(nèi)部數(shù)據(jù)交換的一個(gè)通道。所述gpio控制邏輯在非并口模式下有效,通過相應(yīng)寄存器來控制8個(gè)gpio。所述時(shí)鐘發(fā)生器為芯片提供統(tǒng)一的時(shí)鐘信號(hào)。所述子串口收發(fā)器包括發(fā)送fifo、接收fifo、串口發(fā)送邏輯、串口接收邏輯和波特率發(fā)生器;且每個(gè)子串口都有獨(dú)立的子串口收發(fā)器。所述子串口控制器包括子串口控制邏輯、子串口fifo控制邏輯、485控制邏輯、流量控制邏輯、子串口控制邏輯,且每個(gè)子串口都有獨(dú)立的子串口控制器。所述中斷控制器控制芯片的中斷觸發(fā)與產(chǎn)生中斷信號(hào)及中斷信號(hào)的檢測。所述寄存器管理器,管理芯片所有的內(nèi)部寄存器,芯片內(nèi)部寄存器分為全局寄存器、頁寄存器、子串口寄存器;其中頁寄存器和子串口寄存器為每個(gè)子串口獨(dú)立所有。實(shí)施例2一種uart擴(kuò)展芯片及實(shí)現(xiàn)方法,所述寄存器管理器,管理芯片所有的內(nèi)部寄存器,芯片內(nèi)部寄存器分為全局寄存器、頁寄存器、子串口寄存器三類;其中頁寄存器和子串口寄存器為每個(gè)子串口獨(dú)立所有。所述全局寄存器包括全局子串口使能寄存器gena、全局子串口復(fù)位寄存器grst、全局主串口控制寄存器gmut、全局中斷寄存器gier、全局中斷標(biāo)志寄存器gifr、全局gpio中斷標(biāo)志寄存器gpint、全局gpio中斷使能寄存器gpien、全局gpio方向寄存器gpdir、全局gpio中斷模式寄存器高字節(jié)gpim1、全局gpio中斷模式寄存器低字節(jié)gpim0、全局gpio數(shù)據(jù)寄存器gpdat。全局寄存器的地址為6位,分別依次為000000、000001、000010、010000、010001、010010、100000、100001、100010、110000、110001。具體見下表gena全局控制寄存器:(000000)grst全局子串口復(fù)位寄存器:(000001)gmut全局主串口控制寄存器:(000010)gier全局中斷寄存器:(010000)gifr全局中斷標(biāo)志寄存器:(010001)gpint全局gpio中斷標(biāo)志寄存器:(010010)gpien全局gpio中斷使能寄存器:(100000)gpdir全局gpio方向寄存器:(100001)注意:僅當(dāng)作為輸入引腳功能的時(shí)候,中斷才有效gpim1全局gpio中斷模式寄存器高字節(jié):(100010)gpim0全局gpio中斷模式寄存器低字節(jié):(110000)gpdat全局gpio數(shù)據(jù)寄存器:(110001)位復(fù)位值功能描述類型bit7--0xxxxxxxx只有當(dāng)主接口位uart/spi/iic時(shí),可通過該寄存器訪問gpio7---gpio0引腳w/r所述頁寄存器包括子串口頁控制寄存器spage,子串口頁寄存器的地址為xx0011,其中xx為00、01、10、11中的一個(gè),表示不同的子串口;子串口頁控制寄存器spage的值只能是0或者1;0表示在第0頁,1表示在第一頁;spage子串口頁控制寄存器:(0011)所述子串口寄存器分布在不同的頁上,通過子串口頁控制寄存器spage來控制,其中在第0頁上的寄存器包括子串口使能寄存器scr、子串口配置寄存器lcr、子串口fifo控制寄存器fcr、子串口中斷使能寄存器sier、子串口中斷標(biāo)志寄存器sifr、子串口發(fā)送fifo計(jì)數(shù)寄存器tfcnt、子串口接收fifo計(jì)數(shù)寄存器rfcnt、子串口fifo狀態(tài)寄存器fsr、子串口接收狀態(tài)寄存器lsr、子串口fifo數(shù)據(jù)寄存器fdat、子串口流量控制寄存器fwcr、子串口rs485控制寄存器rs485,這些寄存器的地址為xx0000到xx1111,其中xx為00、01、10、11表示不同的子串口;在第1頁上的寄存器包括子串口波特率配置寄存器高字節(jié)baud1、子串口波特率配置寄存器低字節(jié)baud0、子串口波特率配置寄存器小數(shù)部分pres、子串口接收fifo中斷觸發(fā)點(diǎn)配置寄存器rftl、子串口發(fā)送fifo中斷觸發(fā)點(diǎn)配置寄存器tftl、子串口fifo流控觸發(fā)點(diǎn)配置寄存器高字節(jié)fwth、子串口fifo流控觸發(fā)點(diǎn)配置寄存器低字節(jié)fwtl、子串口xon1寄存器xon1、子串口xoff1寄存器xoff1、rs485地址寄存器sadr、rs485地址使能寄存器saen、rs485rts控制寄存器rtsdly,這些寄存器的地址為xx0000到xx1111,其中xx為00、01、10、11表示不同的子串口;具體見下表scr子串口控制寄存器:(page0:xx0100)lcr子串口配置寄存器:(page0:xx0101)fcr子串口fifo控制寄存器:(page0:xx0110)sier子串口中斷使能寄存器:(page0:xx0111)sifr子串口中斷標(biāo)志寄存器:(page0:xx1000)tfcnt子串口發(fā)送fifo計(jì)數(shù)寄存器:(page0:xx1001)位復(fù)位值功能描述類型bit7--000000000子串口發(fā)送fifo中的數(shù)據(jù)個(gè)數(shù)rrfcnt子串口接收fifo計(jì)數(shù)寄存器:(page0:xx1010)位復(fù)位值功能描述類型bit7--000000000子串口接收fifo中的數(shù)據(jù)個(gè)數(shù)rfsr子串口fifo狀態(tài)寄存器:(page0:xx0111)lsr子串口接收狀態(tài)寄存器:(page0:xx0111)fdat子串口fifo數(shù)據(jù)寄存器:(page0:xx1001)fwcr子串口流量控制寄存器:(page0:xx1110)rs485子串口485控制寄存器:(page0:xx1111)baud1子串口波特率配置寄存器高字節(jié):(page1:xx0100)位復(fù)位值功能描述類型bit7---000000000baud[15:8]子串口波特率配置寄存器高字節(jié)w/rbaud0子串口波特率配置寄存器高字節(jié):(page1:xx0101)位復(fù)位值功能描述類型bit7---000000000baud[7:0]子串口波特率配置寄存器高字節(jié)w/rpres子串口波特率配置寄存器小數(shù)部分:(page1:xx0110)位復(fù)位值功能描述類型bit7---40000rsvrbit3---00000pres[3:0]w/rrftl子串口接收fifo觸發(fā)中斷寄存器:(page1:xx0111)位復(fù)位值功能描述類型bit7---000000000接收fifo觸點(diǎn)控制w/rtftl子串口發(fā)送fifo觸發(fā)中斷寄存器:(page1:xx1000)位復(fù)位值功能描述類型bit7---000000000發(fā)送fifo觸點(diǎn)控制w/rfwth子串口fifo流量觸發(fā)寄存器高字節(jié):(page1:xx1001)位復(fù)位值功能描述類型bit7---000000000流量控制觸點(diǎn)設(shè)置高字節(jié)w/rfwtl子串口fifo流量觸發(fā)寄存器低字節(jié):(page1:xx1010)位復(fù)位值功能描述類型bit7---000000000流量控制觸點(diǎn)設(shè)置低字節(jié)w/rxon1子串口xon1寄存器:(page1:xx1011)位復(fù)位值功能描述類型bit7---000000000xon特殊字符寄存器w/rxoff1子串口xoff1寄存器:(page1:xx1100)位復(fù)位值功能描述類型bit7---000000000xoff特殊字符寄存器w/rsadrrs485地址寄存器:(page1:xx1101)位復(fù)位值功能描述類型bit7---000000000rs485地址w/rsaenrs485地址使能寄存器:(page1:xx1110)位復(fù)位值功能描述類型bit7---000000000rs485地址使能。(rs485網(wǎng)絡(luò)地址為sadr&saen)w/rrtsdlyrs485rts控制寄存器:(page1:xx1111)位復(fù)位值功能描述類型bit7---000000000rts輸出延時(shí)控制(n個(gè)字節(jié)輸出的時(shí)間,n為該寄存器的值)w/r實(shí)施案例3本發(fā)明中的芯片支持gpio擴(kuò)展和gpio中斷控制。主接口在非并口模式下,可以實(shí)現(xiàn)擴(kuò)展8個(gè)gpio或者8個(gè)gpio中斷接口。擴(kuò)展出來的8個(gè)gpio可以通過寄存器gpdir來控制gpio的輸入輸出,其次可以通過寄存器gpdat來控制8個(gè)gpio。擴(kuò)展出來的8個(gè)gpio中斷可以通過寄存器gpint、gpien、gpinm1、gpim0來設(shè)置或者控制。實(shí)施案例4本發(fā)明中的芯片支持每個(gè)子串口獨(dú)立自動(dòng)休眠和自動(dòng)喚醒模式。當(dāng)子串口scr.sleepen=1、接收fifo和發(fā)送fifo要為空、rx上沒有數(shù)據(jù)接收和tx上沒有數(shù)據(jù)發(fā)、子串口沒有任何中斷,當(dāng)滿足上訴條件,并保持以上狀態(tài)4個(gè)byte的時(shí)間后,子串口進(jìn)入休眠模式,子串口時(shí)鐘自動(dòng)關(guān)閉,以降低功耗。此時(shí)通過讀取grst來判斷子串口是否進(jìn)入sleep狀態(tài)。當(dāng)子串口處于休眠狀態(tài)后,如果rx上開始有數(shù)據(jù)接收、向子串口發(fā)送fifo寫數(shù)據(jù)、cts引腳電平變化都會(huì)喚醒處于休眠中的子串口。當(dāng)子串口在休眠狀態(tài)的時(shí)候,如果發(fā)生下列事件:rx上開始接收數(shù)據(jù)、向子串口發(fā)送fifo寫數(shù)據(jù)、cts引腳電平變化,子串口被喚醒,進(jìn)入正常狀態(tài)。實(shí)施案例5本發(fā)明中支持單獨(dú)對(duì)子串口的控制,通過寄存器gena可以控制子串口的時(shí)鐘,從而控制子串口的工作狀態(tài)。其次每個(gè)子串口都有獨(dú)立的寄存器組,用于控制子串口工作模式、子串口速率、中斷設(shè)置、數(shù)據(jù)讀寫等。實(shí)施案例6在本發(fā)明所述的芯片中,所述主接口包括spi控制邏輯、串口收發(fā)邏輯、并口總線控制邏輯、i2c控制邏輯、數(shù)據(jù)轉(zhuǎn)換器;所述四種總線接口的工作原理和流程如下所述。1、spi接口模式工作原理spi與主機(jī)的連接如圖2所示。所示spi接口包括如下四個(gè)信號(hào):mosi:spi數(shù)據(jù)輸入miso:spi數(shù)據(jù)輸出sclk:spi串行時(shí)鐘ssel:spi片選(從屬選擇)spi接口的操作時(shí)序本設(shè)計(jì)的spi接口工作在從機(jī)模式下,支持spi模式0標(biāo)準(zhǔn)。為實(shí)現(xiàn)主機(jī)和本設(shè)計(jì)兼容,在主機(jī)端需要設(shè)置cpol=0,cpha=0.spi接口寫寄存器的操作時(shí)序如圖3所示spi接口讀寄存器的操作時(shí)序如圖4所示spi接口寫fifo的操作時(shí)序如圖5所示spi接口讀fifo的操作時(shí)序如圖6所示為實(shí)現(xiàn)spi總線擴(kuò)展串口操作,本設(shè)計(jì)的spi主機(jī)采用如下協(xié)議spi寫寄存器協(xié)議:spi讀寄存器協(xié)議:spi寫fifo:spi讀fifo:說明:c1c0:子串口通道號(hào)00~11分別對(duì)應(yīng)子串口1到子串口4a3-a0:子串口寄存器地址d7t…d0t:8位數(shù)據(jù)字節(jié)2、uart接口操作模式工作原理uart接口與主機(jī)的連接如圖7所示.當(dāng)本設(shè)計(jì)的主接口位uart時(shí),僅需要rx,tx連接主機(jī),irq引腳為中斷輸出引腳。采用標(biāo)準(zhǔn)的uart協(xié)議進(jìn)行通信。該設(shè)計(jì)帶有波特率自適應(yīng)功能,上電后復(fù)位后,主機(jī)只需要向主接口發(fā)送0x55用來確定主機(jī)的波特率,然后實(shí)現(xiàn)雙方通信。寫操作分為兩種,一種是寫寄存器,具體操作方式是:先寫一個(gè)命令字節(jié)然后再發(fā)送一個(gè)數(shù)據(jù),具體時(shí)序圖如圖7所示;第二種是寫fifo,具體操作方式是:先寫一個(gè)控制字節(jié),然后再寫多個(gè)數(shù)據(jù)。具體時(shí)序如圖8所示。讀操作也分為兩種,第一種是讀寄存器,具體操作方式是:先寫一個(gè)命令字節(jié)然后再接收一個(gè)數(shù)據(jù)字節(jié),具體時(shí)序如圖9所示;第二種是讀fifo,具體操作方式是:先寫一個(gè)控制字節(jié),然后再接收多個(gè)數(shù)據(jù)。如圖10所示。主uart通信的傳輸協(xié)議描述如下表示:寫寄存器:寫fifo:(多字節(jié)寫入)讀寄存器:讀fifo:(多字節(jié)讀?。┱f明:c1,c0:子串口通道號(hào),00~11分別對(duì)應(yīng)子串口1到子串口4。a3,a2,a1,a0:子串口寄存器地址;n3,n2,n1,n0:寫入/讀取fifo的數(shù)據(jù)字節(jié)個(gè)數(shù);當(dāng)其為0000時(shí),表明后接1個(gè)數(shù)據(jù)字節(jié);當(dāng)其為1111時(shí),表明后接16個(gè)數(shù)據(jù)字節(jié);向子串口讀/寫數(shù)據(jù)有兩種方法:讀/寫寄存器方式,對(duì)子串口fifo寄存器fdat(1111)進(jìn)行讀/寫操作,一次只能讀/寫一個(gè)字節(jié);讀/寫fifo方式,對(duì)接收/發(fā)送fifo直接進(jìn)行讀/寫操作,一次最多可以讀寫16個(gè)連續(xù)數(shù)據(jù)3、并行8位總線接口模式工作原理圖本設(shè)計(jì)方案支持8位并行總線與主機(jī)連接,在8位總線模式下的傳輸協(xié)議如下:并行8位總線傳輸協(xié)議描述:寫寄存器:讀寄存器:說明:c1,c0:子串口通道號(hào),00~11分別對(duì)應(yīng)子串口1到子串口4a3,a2,a1,a0:子串口寄存器地址4、i2c接口操作模式工作原理i2c接口與主機(jī)的連接如圖12所示.i2c接口寫寄存器的操作時(shí)序如圖13所示i2c接口讀寄存器的操作時(shí)序如圖14所示i2c接口寫fifo的操作時(shí)序如圖15所示i2c接口讀fifo的操作時(shí)序如圖16所示i2c接口模塊的操作協(xié)議如下:當(dāng)主機(jī)與芯片通信的時(shí)候,必須在緊跟地址字節(jié)后發(fā)送寄存器地址。這個(gè)寄存器地址是主機(jī)想在一個(gè)字節(jié)讀寫或者多字節(jié)讀寫的操作的內(nèi)部地址字。這個(gè)寄存器地址字是8比特字節(jié)。與其它設(shè)備不同它沒有方向位,與普通的數(shù)據(jù)字節(jié)相同,它必須跟一個(gè)應(yīng)答位。一個(gè)寫寄存器的操作如下圖所示。起始位后面緊跟從機(jī)地址和一個(gè)讀寫的方向位,一個(gè)寄存器地址字節(jié),一系列的數(shù)據(jù)字節(jié)和一個(gè)停止位。寄存器地址指示主機(jī)想操作的寄存器。緊跟著的數(shù)據(jù)會(huì)被寫入指定的寄存器。一個(gè)寄存器的讀操作與寫操作類似。主機(jī)發(fā)送從機(jī)地址和讀的方向信號(hào),緊跟寄存器地址,芯片就會(huì)發(fā)送數(shù)據(jù)給主機(jī)。i2c寫寄存器協(xié)議:i2c讀寄存器協(xié)議:i2c寫fifo協(xié)議:i2c讀fifo協(xié)議:說明:c1,co:子串口通道號(hào),00~11分別對(duì)應(yīng)子串口1到子串口4a3,a2,a1,a0:子串口寄存器地址p1,p0:為器件地址,這個(gè)由芯片引腳控制s:起始位p:停止位a:應(yīng)答位。當(dāng)前第1頁12