




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、SEG模塊測試1、功能描述使用數碼管來顯示當前MP3播放的歌曲序號2、IO口復用功能2.1 IO口復用功能描述1 使用默認復用功能前必須對端口位配置寄存器編程l 對于復用的輸入功能,端口可以配置成:Ø 輸入模式(浮空,上拉或下拉);Ø 復用功能輸出模式:輸入驅動器被配置成浮空輸入模式;l 對于復用的輸出功能,端口必須配置成復用功能輸出模式(推挽或開漏);l 對于雙向復用功能,端口必須配置復用功能輸出模式(推挽或開漏),這時,輸入驅動器被配置成浮空輸入模式;如果把一端口配置成復用輸出功能,將使引腳和輸出寄存器斷開,并和片上外設的輸出信號連接如果軟件把一個GPIO腳配置成復用功
2、能,但是外設沒有被激活,它的輸出將不確定。2,I/O端口的基本結構3 端口位配置表4輸出模式位2.2 使用IO口復用功能配置步驟/=SPI1復用功能初始化=GPIO_InitStructure.GPIO_Pin= GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;/選擇PA.4,PA.5, PA.6,PA.7GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;/管腳頻率為50MHZGPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;/模式為復用推挽輸出 (SPI1) G
3、PIO_Init(GPIOA, &GPIO_InitStructure); /初始化GPIOA寄存器3、SPI接口使用3.1 SPI功能描述串行外設接口(SPI)允許芯片與外部設備以半/全雙工,同步,串行方式通信。此接口可以被配置成主模式,在這種模式下,它要為外部從設備提供通信時鐘(SCK).接口還能以多主配置方式工作。它可用于多種用途,包括可選第三根雙向數據的雙線單工同步傳輸,或使用CRC校驗的可靠通信。SPI方框圖:SPI通過4個引腳和外部設備相連:l MISO: 主入/從出數據口,此引腳可以被用來在從模式中發送數據,在主模式中接受數據。l MOSI: 主出/從入數據口,此引腳可以
4、用來在主模式是發送數據,在從模式時接受數據。l SCK: SPI主設備輸出串行時鐘,SPI從設備輸入串行時鐘l NSS: 從選擇。這是一個用來選擇主/從模式的可選引腳。SPI主設備和從設備分別通信時,該引腳起到依次片選各個從設備的作用,以避免發生數據線沖突。從設備 的NSS輸入可以由主設備上的標準I/O端口驅動。SPI工作在主設備配置時,如果SSOE位使能,則NSS引腳用作輸出,并輸出低電平;此時,所有NSS引腳連到該設備NSS引腳的其他設備都將收到低電平,當這些設備配置為NSS硬件模式時,就被自動地配置成從設備.3.2 時鐘信號的相位和極性使用SPI_CR寄存器的CPOL和CPHA位,組合成
5、四種可能的時序關系,CPOL(時鐘極性)位控制在沒有數據傳輸時時鐘的空閑狀態電平,此位對主模式和從模式下的設備都有效。如果控制CPOL被復位,SCK引腳在空閑狀態保持低電平;如果CPOL被置位,SCK引腳在空閑狀態保持高電平。如果CPHA(時鐘相位)位被置位,SCK時鐘的第二個邊沿(CPOL位為0時就是下降沿,CPOL位為1時就是上升沿)進行數據位的采樣。數據在第一個時鐘邊沿被鎖存,如果CPHA位被復位,SCK時鐘的第一個邊沿(CPOL位為0時就是下降沿,CPOL位為1時就是上升沿)進行數據采樣,數據在第二個時鐘邊沿被鎖存。CPOL時鐘的極性和CPHA時鐘相位的組合選擇數據捕促的時鐘邊沿。No
6、te:1. 在改變CPOL/CPHA位之前,必須清除SPE位將SPI禁止。2. 主和從必須配置成相同的時序模式。3. SCK的空閑狀態必須和SPI_CR1寄存器指定的極性一致(CPOL為1時,空閑時應上拉SCK為高電平;CPOL為0時,空閑時應下拉SCK為低電平)。4. 數據幀格式(8位或16位)由SPI_CR1寄存器的DFF位選擇,并且決定發送/接受的數據長度數據時鐘時序圖:3.3 SPI應用單主和單從應用:MOSI腳相互連接,MISO腳相互連接,用這種方式,數據在主和從之間串行的傳輸(MSB位在前)。通信總是由主設備發起,從設備通過MOSI腳把數據發送給從設備,從設備通過MISO引腳回傳數
7、據。這意味全雙工通信的數據輸出和數據輸入是同一個時鐘信號同步的;時鐘信號由主設備通過SCK腳提供。3.4 SPI庫函數函數名描述SPI_DeInit將外設SPIx寄存器重設為缺省值SPI_Init根據SPI_InitStruct中指定的參數初始化外設SPIx寄存器SPI_Cmd使能或者失能SPI外設SPI_I2S_SendData發送數據3.4 使用SPI基本步驟SPI主模式:配置步驟:1. 通過SPI_CRQ寄存器的BR2:0位定義串行時鐘波特率。2. 選擇CPOL和CPHA位,定義數據傳輸和串行時鐘的相位關系。3. 設置DFF位來定義8或16位數據幀格式。4. 配置SPI_CR1寄存器的L
8、SBFIRST位定義幀格式5. 如果NSS引腳需要工作在輸入模式,硬件模式中在整個數據幀傳輸期間應把NSS腳連接到高電平;在軟件模式中,需設置SPI_CR1寄存器的SSM和SSI位,如果NSS引腳工作在輸出模式,則只需設置SSOE位。6. 必須設置MSTR和SPE位(只當NSS腳被連到高電平,這些位才能保持置位)。在這個配置 中,MOSI腳是數據輸出,而MISO腳是數據輸入。數據發送過程:當一個字節寫進發送緩沖器時,發送過程開始。在發送第一個數據位時,數據字被并行地(通過內部總線)傳入移位寄存器,而后串行地移出到MOSI腳上;MSB在先還是LSB在先,取決于SPI_CR1寄存器中的LSBFIR
9、SRT位,數據從發送緩沖器傳輸到移位寄存器時TXE標志將被置位,如果設置SPI_CR1寄存器中的TXEIE位,將產生中斷4、硬件電路Note:使用 SPI與74HC595進行通信5、74HC595功能描述74HC595,是為Motorola的SPI總線開發的一款串并轉換芯片,由于74HC595的輸入輸出電平兼容LSTTL,NMOS,COMOS電平,且具有較強的輸出負載能力,而被廣泛地運用于MCU(微控制器),MPU(微處理器)的I/O擴張。74HC595在5V供電的時候能夠達到30MHz的時鐘速度,每個并行輸出端口均能承受20mAd灌電流和拉電流,這個特點保證了不用增加額外的擴流電路即可輕松驅
10、動LED。引腳及其功能:管腳號管腳名稱管腳功能描述1QB鎖存器輸出,三態2QC鎖存器輸出,三態2QD鎖存器輸出,三態4QE鎖存器輸出,三態5QF鎖存器輸出,三態6QG鎖存器輸出,三態7QH鎖存器輸出,三態8GND電源地9SOUT串行輸出,用于級聯,無三態輸出功能10SCLR低電平有效,當此管腳上出現低電平時,將復位內部的移位寄存器,但不影響8位鎖存器的值11SCK移位寄存器時鐘輸入 ,上升沿把14腳的數據移入內部寄存器12RCK鎖存時鐘輸入,上升沿將把內部移位寄存器的值鎖存起來13nCS低電平有效,將鎖存器的輸出映射到輸出并行口(QA-QH)上14SI串行數據的輸入,數據從這個管腳移進內部的8
11、位串行移位寄存器15QA鎖存器輸出,三態16VCC電源正,2-6V6軟件代碼/* 版權:源享教育()* 文件:Seg_Module.c* 版本:1.0* 說明:MP3播放器當前播放歌曲序號,播放第1首時4位數碼管顯示0001,依次排列* 作者:劉斌* 說明:數碼管段顯由HC595控制,位顯由IO口SEG_A1/SEG_A2/SEG_A3/SEG_A4控制。*HC595使用SPI通信方式,Cortex M3的SPI使用步驟如下:*1、使能APB2外設SPI1時鐘:RCC_APB2PeriphClockCmd();*2、將外設SPI寄存器重設為缺省值:SPI_I2S_DeInit();*3、初始化
12、外設SPI寄存器:SPI_Init();*4、使能APB2外設SPI:SPI_Cmd();*5、調用SPI數據發送函數:SPI_I2S_SendData();-修改記錄-* 修改功能:* 修改時間:* 修改作者:* 遺留問題:*/#include "stm32f10x_lib.h" /包含了所有的頭文件 它是唯一一個用戶需要包括在自己應用中的文件,起到應用和庫之間界面的作用。#defineHC595_nCS GPIO_Pin_0/HC595_nCS = PA0#defineHC595_RCK GPIO_Pin_1/HC595_RCK = PA1#defineSEG_A1 G
13、PIO_Pin_8/SEG_A1 = PC8#defineSEG_A2 GPIO_Pin_15/SEG_A2 = PB15#defineSEG_A3 GPIO_Pin_9/SEG_A3 = PC9#defineSEG_A4 GPIO_Pin_8/SEG_A4 = PE8u8 const NumberTube_TAB10=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;/數碼管09/* Function Name : SEG_Init* Description : SEG數碼管引腳,SPI1引腳初始化* Input : None* Return
14、 : None*/voidSEG_Init(void)GPIO_InitTypeDef GPIO_InitStructure;/ 聲明一個IO口結構體變量SPI_InitTypeDef SPI1_InitStructure;/聲明一個SPI結構體變量RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);/ 使能APB2外設GPIOA時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);/ 使能APB2外設GPIOB時鐘RCC_APB2PeriphClockCmd(RCC_APB2Pe
15、riph_GPIOC , ENABLE);/ 使能APB2外設GPIOC時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE , ENABLE);/ 使能APB2外設GPIOE時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 , ENABLE);/ 使能APB2外設SPI1時鐘 /=PA口IO結構體初始化= GPIO_InitStructure.GPIO_Pin= HC595_nCS|HC595_RCK;/選擇PA.0,PA.1 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_5
16、0MHz;/管腳頻率為50MHZ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;/模式為推挽輸出 GPIO_Init(GPIOA, &GPIO_InitStructure); /初始化GPIOA寄存器/=PB口IO結構體初始化= GPIO_InitStructure.GPIO_Pin= SEG_A2;/選擇PB.15 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;/管腳頻率為50MHZ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;/模
17、式為推挽輸出 GPIO_Init(GPIOB, &GPIO_InitStructure); /初始化GPIOB寄存器/=PC口IO結構體初始化= GPIO_InitStructure.GPIO_Pin= SEG_A1|SEG_A3;/選擇PC.8,PC.9 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;/管腳頻率為50MHZ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;/模式為推挽輸出 GPIO_Init(GPIOC, &GPIO_InitStructure); /初始化GP
18、IOC寄存器/=PE口IO結構體初始化= GPIO_InitStructure.GPIO_Pin= SEG_A4;/選擇PE.8 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;/管腳頻率為50MHZ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;/模式為推挽輸出 GPIO_Init(GPIOE, &GPIO_InitStructure); /初始化GPIOE寄存器/=SPI1復用功能初始化=GPIO_InitStructure.GPIO_Pin= GPIO_Pin_4|GPIO_Pin
19、_5|GPIO_Pin_6|GPIO_Pin_7;/選擇PA.4,PA.5, PA.6,PA.7 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;/管腳頻率為50MHZ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;/模式為復用推挽輸出 (SPI1) GPIO_Init(GPIOA, &GPIO_InitStructure); /初始化GPIOA寄存器/=設置SPI1工作模式=SPI1_InitStructure.SPI_Direction = SPI_Direction_2Lines_F
20、ullDuplex;/SPI設置為雙線雙向全雙工SPI1_InitStructure.SPI_Mode = SPI_Mode_Master;/設置為主SPISPI1_InitStructure.SPI_DataSize = SPI_DataSize_8b;/SPI發送接收8位幀結構SPI1_InitStructure.SPI_CPOL = SPI_CPOL_High;/CPOL = 1SPI1_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;/CPHA = 0SPI1_InitStructure.SPI_NSS = SPI_NSS_Hard;/NSS由外部管腳管
21、理SPI1_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64;/分頻值為64SPI1_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;/數據傳輸LSB(低位)開始SPI1_InitStructure.SPI_CRCPolynomial = 7;SPI_I2S_DeInit(SPI1);/將外設SPI1寄存器重設為缺省值 ;SPI_Init(SPI1, &SPI1_InitStructure);/初始化外設SPI1寄存器/=使能SPI1=SPI_Cmd(SPI1, EN
22、ABLE);/使能SPI1外設GPIO_ResetBits(GPIOA, HC595_nCS);/* Function Name : SEG_BitSelect* Description : 選擇數碼管的位選* Input : data 選擇碼,data的取值為0x01,0x02,0x04,0x08* Return : None*/void SEG_BitSelect(u8 data)if(data & 0x01) != 0)GPIO_ResetBits(GPIOC, SEG_A1);/ 控制smgA1 = PC8elseGPIO_SetBits(GPIOC, SEG_A1);if(d
23、ata & 0x02) != 0)GPIO_ResetBits(GPIOB, SEG_A2);/ 控制smgA2 = PB15elseGPIO_SetBits(GPIOB, SEG_A2);if(data & 0x04) != 0)GPIO_ResetBits(GPIOC, SEG_A3);/ 控制smgA3 = PC9elseGPIO_SetBits(GPIOC, SEG_A3);if(data & 0x08) != 0)GPIO_ResetBits(GPIOE, SEG_A4);/ 控制smgA4 = PE8elseGPIO_SetBits(GPIOE, SEG_A
24、4);/* Function Name : SEG_Display* Description : 數碼管顯示4位數據* Input : data需要顯示的數據*radix_point小數點的位置,取值范圍為4、3、2* Return : None*/voidSEG_Display(u16 data,u8 radix_point)u16 j,one,ten,hundred,thousand;/個,十,百,千,的變量聲明thousand = data / 1000;/計算千位if(thousand != 0) data -= thousand*1000;hundred = data / 100;/
25、計算百位if(hundred != 0) data -= hundred*100; ten = data / 10;/計算十位if(ten != 0) data -= ten*10; one = data % 10;/計算個位/-顯示千位數據-GPIO_ResetBits(GPIOA, HC595_RCK); if(radix_point=4)SPI_I2S_SendData(SPI1, NumberTube_TABthousand & 0x7f); elseSPI_I2S_SendData(SPI1, NumberTube_TABthousand );GPIO_SetBits(GPIOA, HC595_RCK);SEG_BitSelect(0x08);/打開數碼管位選端for(j=0;j<500;j+);/小段延時SEG_BitSelect(0x00);/關閉顯示/-顯示百位數據-GPIO_ResetBits(GPIOA, HC595_RCK);if(radix_point=3)SPI_I2S_SendData(SPI1, NumberTube_TABhundred & 0x7f);elseSPI_I2S_SendData(SP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 潛水裝備的水下作業安全意識培養與提升考核試卷
- 舞蹈教育在兒童成長中的作用考核試卷
- 窗簾面料的環保染整技術考核試卷
- 四川水利職業技術學院《臨床檢驗儀器與技術》2023-2024學年第二學期期末試卷
- 山西省運城市萬榮縣2025年初三下學期第二次模擬考試化學試題文試卷含解析
- 山東省威海市文登區文登實驗、三里河中學2025屆中考化學試題模擬試卷(8)含解析
- 沈陽工業大學《現代地球物理學進展》2023-2024學年第二學期期末試卷
- 濰坊學院《大學寫作實踐課》2023-2024學年第二學期期末試卷
- 景德鎮市重點中學2024-2025學年初三考前熱身生物試題試卷含解析
- 天門職業學院《應用真菌學》2023-2024學年第二學期期末試卷
- 醬酒行業發展趨勢分析
- 《紅樓夢》賈府平面圖
- 養老機構全套服務管理流程圖()
- 運用PDCA辦法提高分級護理落實率
- 高級卒中中心申報操作流程
- 幼兒園幼兒小籃球活動體能測試表
- 遠盛水工重力壩輔助設計系統用戶使用手冊
- 通用城實景三維數據生產項目技術設計書
- 畢業設計(論文)-N402—1300型農用拖拉機履帶底盤的設計
- 巖棉項目申報書_參考模板
- 施工組織設計方案交底記錄
評論
0/150
提交評論