《國產(chǎn)嵌入式技術(shù)及應(yīng)用實(shí)踐》課件 項(xiàng)目五可穿戴應(yīng)用終端設(shè)計(jì)與實(shí)現(xiàn)任務(wù)3 人機(jī)交互功能設(shè)計(jì)與開發(fā)_第1頁
《國產(chǎn)嵌入式技術(shù)及應(yīng)用實(shí)踐》課件 項(xiàng)目五可穿戴應(yīng)用終端設(shè)計(jì)與實(shí)現(xiàn)任務(wù)3 人機(jī)交互功能設(shè)計(jì)與開發(fā)_第2頁
《國產(chǎn)嵌入式技術(shù)及應(yīng)用實(shí)踐》課件 項(xiàng)目五可穿戴應(yīng)用終端設(shè)計(jì)與實(shí)現(xiàn)任務(wù)3 人機(jī)交互功能設(shè)計(jì)與開發(fā)_第3頁
《國產(chǎn)嵌入式技術(shù)及應(yīng)用實(shí)踐》課件 項(xiàng)目五可穿戴應(yīng)用終端設(shè)計(jì)與實(shí)現(xiàn)任務(wù)3 人機(jī)交互功能設(shè)計(jì)與開發(fā)_第4頁
《國產(chǎn)嵌入式技術(shù)及應(yīng)用實(shí)踐》課件 項(xiàng)目五可穿戴應(yīng)用終端設(shè)計(jì)與實(shí)現(xiàn)任務(wù)3 人機(jī)交互功能設(shè)計(jì)與開發(fā)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

任務(wù)3人機(jī)交互功能設(shè)計(jì)與開發(fā)成都職業(yè)技術(shù)學(xué)院成都卓物科技有限公司任務(wù)情報(bào)SPI是一種全雙工高速通信總線,英文全稱SerialPeripheralinterface串行外圍設(shè)備接口,主要應(yīng)用于EEPROM、LCD、FLASH等應(yīng)用場景。一共四根線,分別是:MISO:主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出。MOSI:主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入。SCLK:時(shí)鐘信號(hào),由主設(shè)備產(chǎn)生。CS:從設(shè)備片選信號(hào),由主設(shè)備控制。一個(gè)主機(jī)可以接多個(gè)從機(jī),CS(SSx)從高電平到低電平選擇一個(gè)從機(jī),SCK、MOSI、MISO三根可以分別連接在一起,如圖所示SPI一共有四種通訊模式,這里引入時(shí)鐘極性(CPOL)和時(shí)鐘相位(CPHA),CPOL=0時(shí),SCK空閑狀態(tài)為低電平;CPOL=1時(shí),SCK空閑狀態(tài)為高電平;CPHA=0時(shí),在SCK第一個(gè)周期邊沿變化被采樣;CPHA=1時(shí),在SCK第二個(gè)周期被采樣,如表所示。當(dāng)CPHA=0的情況:當(dāng)SPI_CFG2.CPHA位為“0”時(shí),SPI在SCK的奇數(shù)邊沿進(jìn)行數(shù)據(jù)采樣,偶數(shù)邊沿進(jìn)行數(shù)據(jù)更新。下圖所示是CPHA=0時(shí)SPI的傳送時(shí)序圖。當(dāng)SSi信號(hào)的輸入電平變?yōu)橛行щ娖綍r(shí),MOSI/MISO開始更新傳輸數(shù)據(jù)。在SSi信號(hào)變?yōu)橛行Ш蟮牡谝粋€(gè)SCK信號(hào)邊沿進(jìn)行第一次數(shù)據(jù)采樣,在此之后,每過一個(gè)SCK周期對(duì)數(shù)據(jù)進(jìn)行一次采樣。每次采樣后的1/2個(gè)SCK周期時(shí)MOSI/MISO信號(hào)上數(shù)據(jù)進(jìn)行更新。CPOL位的設(shè)定值不影響SCK信號(hào)的運(yùn)行時(shí)序,而只影響信號(hào)的極性。CPHA=1的情況:當(dāng)SPI_CFG2.CPHA位為“1”時(shí),SPI在SCK的奇數(shù)邊沿進(jìn)行數(shù)據(jù)更新,偶數(shù)邊沿進(jìn)行數(shù)據(jù)采樣。下圖所示是CPHA=1時(shí)SPI的傳送時(shí)序圖。MOSI/MISO在SSi信號(hào)變?yōu)橛行щ娖胶蟮牡谝粋€(gè)SCK信號(hào)邊沿時(shí)開始傳輸數(shù)據(jù)的更新。在此之后,每過一個(gè)SCK周期對(duì)數(shù)據(jù)進(jìn)行一次更新。每次更新后的1/2個(gè)SCK周期時(shí)對(duì)數(shù)據(jù)進(jìn)行采樣。SPI_CFG2.CPOL位的設(shè)定值不影響SCK信號(hào)的運(yùn)行時(shí)序而只影響信號(hào)的極性。HC32F460一共有4個(gè)通道的串行外設(shè)接口,支持三線/四線傳輸,可設(shè)置波特率和數(shù)據(jù)寬度,系統(tǒng)框圖如圖所示。HC32F460的SPI中斷源有接收緩沖器滿、發(fā)送緩沖器空、模式故障、過載、欠載、奇偶校驗(yàn)錯(cuò)誤和SPI空閑。其中接收緩沖器滿和發(fā)送緩沖器空中斷可用于啟動(dòng)DMA進(jìn)行數(shù)據(jù)傳送。SPI中斷源的具體說明如表所示。在主機(jī)模式下,SPI時(shí)鐘由內(nèi)部波特率發(fā)生器提供;從機(jī)模式下,時(shí)鐘為SCK腳輸入。波特率取決于SPI_CFG2.MBR[2:0]位的設(shè)置。其計(jì)算方法如下面公式所示,公式中N為MBR[2:0]位的設(shè)定值,范圍是0~7。波特率:fpack/2^(N+1)本次任務(wù)常用寄存器:

SPI數(shù)據(jù)寄存器(SPI_DR)

SPI通信配置寄存器(SPI_CFGx)

SPI狀態(tài)寄存器(SPI_SR)

SPI控制寄存器(SPI_CR1)SPI數(shù)據(jù)寄存器(SPI_DR)用于發(fā)送和接收SPI數(shù)據(jù)。發(fā)送時(shí),數(shù)據(jù)先寫入此寄存器,然后傳輸?shù)揭莆患拇嫫?。接收時(shí),數(shù)據(jù)從移位寄存器移動(dòng)到此寄存器。SPI通信配置寄存器(SPI_CFG1)設(shè)定波特率、使用幀數(shù)、各種延遲時(shí)間等。(SPI_CFG2)設(shè)定SS電平、數(shù)據(jù)移位順序、延遲允許位、數(shù)據(jù)格式及時(shí)鐘極性相位等,詳情請(qǐng)查看手冊(cè)。SPI狀態(tài)寄存器(SPI_SR)用于處理SPI通信中的中斷和狀態(tài)檢查。包括各種中斷請(qǐng)求和狀態(tài)標(biāo)志位,如TXIE(發(fā)送數(shù)據(jù)中斷允許位)、RXIE(接收數(shù)據(jù)中斷允許位)、IDIE(SPI閑置狀態(tài)中斷允許位)等。SPI控制寄存器(SPI_CR1)設(shè)定SPI的模式及運(yùn)行方式、自診斷功能、奇偶校驗(yàn)等。SPE位用于啟動(dòng)和停止SPI操作。本次任務(wù)使用的是1.28寸的原型屏幕,驅(qū)動(dòng)芯片采用GC9A01驅(qū)動(dòng),一共有12個(gè)引腳,如圖所示。該顯示屏可使用三線SPI引腳驅(qū)動(dòng),引腳功能如表所示。SPI編程說明小華半導(dǎo)體公司提供的驅(qū)動(dòng)庫包含了HC32F460芯片的SPI驅(qū)動(dòng),相關(guān)的定義和說明可以在hc32_ll_spi.c和hc32_ll_spi.h文件中找到。SPI編程定義說明在HC32F460.h文件中HC32F460芯片的SPI一共有4個(gè)通道定義如下:#defineCM_SPI1((CM_SPI_TypeDef*)CM_SPI1_BASE)#defineCM_SPI2((CM_SPI_TypeDef*)CM_SPI2_BASE)#defineCM_SPI3((CM_SPI_TypeDef*)CM_SPI3_BASE)#defineCM_SPI4((CM_SPI_TypeDef*)CM_SPI4_BASE)在hc32_ll_spi.h文件中SPI配置參數(shù)時(shí)使用stc_spi_init_t結(jié)構(gòu)體,該結(jié)構(gòu)體參數(shù)很多,下面一一說明。uint32_tu32WireMode:選擇SPI總線為3線還是4線。uint32_tu32TransMode:選擇SPI傳輸模式為全雙工同步串行通信和只發(fā)送串行通信。uint32_tu32MasterSlave:選擇SPI為主機(jī)還是從機(jī)。uint32_tu32ModeFaultDetect:SPI故障命令選擇位。uint32_tu32Parity:選擇SPI奇偶校驗(yàn)?zāi)J?。uint32_tu32SpiMode:設(shè)置SPI通訊模式。uint32_tu32BaudRatePrescaler:設(shè)置SPI通信時(shí)鐘。uint32_tu32DataBits:設(shè)置SPI數(shù)據(jù)位。uint32_tu32FirstBit:設(shè)置SPI開始數(shù)據(jù)位電平。uint32_tu32SuspendMode:SPI通訊自動(dòng)掛起功能允許位。uint32_tu32FrameLevel:SPI數(shù)據(jù)幀級(jí)別設(shè)置。SPI初始化打開BSP_SPI.h文件,本次任務(wù)使用的是SPI1。/*SPIdefinition*/#defineSPI_UNIT(CM_SPI1)#defineSPI_CLK(FCG1_PERIPH_SPI1)將屏幕的SPI引腳更改上去。/*SS=PA07*/#defineSPI_SS_PORT(GPIO_PORT_A)#defineSPI_SS_PIN(GPIO_PIN_07)#defineSPI_SS_FUNC(GPIO_FUNC_42)/*SCK=PA06*/#defineSPI_SCK_PORT(GPIO_PORT_A)#defineSPI_SCK_PIN(GPIO_PIN_06)#defineSPI_SCK_FUNC(GPIO_FUNC_43)/*MOSI=P05*/#defineSPI_MOSI_PORT(GPIO_PORT_A)#defineSPI_MOSI_PIN(GPIO_PIN_05)#defineSPI_MOSI_FUNC(GPIO_FUNC_40)在lcd_init.h文件修改OLED的DC引腳。#defineBSP_LCD_DC_PORT(GPIO_PORT_C)#defineBSP_LCD_DC_PIN(GPIO_PIN_04)在main函數(shù)里首先初始化SPI_Config()函數(shù),才能初始化OLED函數(shù)LCD_Init()。

SPI_Config();LCD_Init();屏幕初始化成功后,首先要進(jìn)行清屏處理,x和y軸從0開始,終點(diǎn)為屏幕的最大尺寸,以白色填充整個(gè)屏幕。LCD_Fill(0,0,LCD_W,LCD_H,WHITE);清屏后使用LCD_ShowString()函數(shù)顯示字符串,x和y軸從60開始,顯示字符串“AMOLEDinitial”,字體為紅色,背景白色,字號(hào)16,無覆蓋。后面來一個(gè)死循環(huán),不然讓程序退出。LCD_ShowString(60,60,(void*)"AMOLEDinitial",RED,WHITE,1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論