版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、* spi_tm7705.h* *#ifndef _SPI_TM7705_H#defi ne _SPI_TM7705_H#in elude stm32f10x.h#i nclude SysTick.h/*片選信號,拉低為選中*/#defi ne CS1_L0W() #defi ne CS1_HIGH() #defi ne CS2_LOW() #defi ne CS2_HIGH() #defi ne CS3_LOW() #defi ne CS3_HIGH() #defi ne CS4_LOW() #defi ne CS4_HIGH()GPIO_ResetBits(GPIOA, GPIO_Pin_
2、4)GPIO_SetBits(GPIOA, GPIO_Pin_4)GPIO_ResetBits(GPIOB, GPIO_Pin_0)GPIO_SetBits(GPIOB, GPIO_Pin_0)GPIO_ResetBits(GPIOB, GPIO_Pin_1)GPIO_SetBits(GPIOB, GPIO_Pin_1)GPIO_ResetBits(GPIOB, GPIO_Pin_5)GPIO_SetBits(GPIOB, GPIO_Pin_5)/* DRDY拉低為可以讀取*/#defi ne DRDY1_LOW()#defi ne DRDY2_LOW()#defi ne DRDY3_LOW(
3、)#defi ne DRDY4_LOW()GPIO_Readl nputDataBit(GPIOB, GPIO_Pin_12)GPIO_Readl nputDataBit(GPIOB, GPIO_Pin_13)GPIO_ReadI nputDataBit(GPIOB, GPIO_Pin_14)GPIO_ReadI nputDataBit(GPIOB, GPIO_Pin_15)void SPI_TM7705_I nit(void);u8 SPI1_ReadWriteByte(u8 TxData);void TM7705_I nit(void);void ReadAD(void);#e ndif
4、/* _SPI_TM7705_H */* spi_tm7705.h* */*spi tm7705 c* * 文件名:spi_tm7705.c*描述 :spi_tm7705底層應(yīng)用函數(shù)庫*實驗平臺:* 硬件連接 PA5-SPI1-SCK : CLKPA6-SPI1-MISO : DOUT* PA7-SPI1-M0SI : DIN*PA4:CS1*PB0 :CS2*PB1 :CS3*PB5 :CS4*PB12:DRDY1*PB13:DRDY2*PB14:DRDY3*PB15:DRDY4* *庫版本 :ST3.0.0*/#i nclude spi_tm7705.hu16 ADResult4; 存儲A
5、D結(jié)果的數(shù)組/*初始化SPI1與tm7705的接口*/void SPI_TM7705_I nit(void)SPI_I ni tTypeDef SPI_I nitStructure;GPIO_I ni tTypeDef GPIOA_I ni tStructure;GPIO_I ni tTypeDef GPIOB_I ni tStructure;/* 配置外設(shè)時鐘*/*! SPI_FLASH_SPI_CS_GPIO, SPI_FLASH_SPI_MOSI_GPIO,SPI_FLASH_SPI_MISO_GPIO, SPI_FLASH_SPI_DETECT_GPIOand SPI_FLASH_SP
6、I_SCK_GPIO Periph clock en able */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);/*! Periph clock en able */RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);/*! AFIO Periph clock en able */RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);/*! Con figure SCK */GPIOA_
7、I ni tStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_P in_7;GPIOA_I nitStructure.GPIO_Speed = GPIO_Speed_5OMH z;GPIOA_I ni tStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_I nit(GPIOA, & GPIOA_I nitStructure);/ /*! Configure MISO */ GPIOA_I nitStructure.GPIO_Pin = GPIO_Pin_6;/ GPIO_I nit(GPIOA, & GP
8、IOA_I ni tStructure);/ /*! Configure MOSI */ GPIOA_I nitStructure.GPIO_Pin = GPIO_P in_7;/ GPIO_I nit(GPIOA, & GPIOA_I ni tStructure);/*! Con figure CS1 */GPIOB_I ni tStructure.GPIO_Pin = GPIO_Pin_4 ;GPIOB_I ni tStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIOB_I nitStructure.GPIO_Speed = GPIO_Speed_50MH
9、 z; /設(shè)置引腳速率為 50MHZGPIO_Init(GPIOA, &GPIOB_InitStructure);/*! Con figure CS2,3,4 */GPIOB_I nitStructure.GPIO_P in = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_P in_5;GPIOB_I ni tStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIOB_I nitStructure.GPIO_Speed = GPIO_Speed_50MH z; /設(shè)置引腳速率為 50MHZGPIO_I nit(GPIOB, & GPIOB_I n
10、itStructure);/*! Con figure DRDY1,2,3,4*/GPIOB_I nitStructure.GPIO_P in= GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |GPIO_Pin_15;GPIOB_I ni tStructure.GPIO_Mode = GPIO_Mode_IPU;GPIOB_I nitStructure.GPIO_Speed = GPIO_Speed_50MH z; /設(shè)置引腳速率為 50MHZGPIO_I nit(GPIOB, & GPIOB_I nitStructure);/*將片選信號全部拉高*/CS1_
11、HIGH();CS2_HIGH();CS3_HIGH();CS4_HIGH();/* SPI1 con figuration */設(shè)置SPI單向或者雙向的數(shù)據(jù)模式:SPI設(shè)置為雙線雙向全雙工SPI_I ni tStructure.SPI_Direction = SPI_Direction_2Li nes_FullDuple x;/設(shè)置SPI工作模式:設(shè)置為主SPISPI_I nitStructure.SPI_Mode = SPI_Mode_Master;/設(shè)置SPI的數(shù)據(jù)大小:SPI發(fā)送接收8位幀結(jié)構(gòu)SPI_I ni tStructure.SPI_DataSize = SPI_DataSize
12、_8b;/選擇了串行時鐘的穩(wěn)態(tài):時鐘懸空高SPI_I nitStructure.SPI_CPOL = SPI_CPOL_High;/數(shù)據(jù)捕獲于第二個時鐘沿SPI_ln itStructure.SPI_CPHA = SPI_CPHA_2Edge;/NSS信號由硬件(NSS管腳)還是軟件(使用SSI位)管理:內(nèi)部NSS信號有SPI_ln itStructure.SPI_NSS = SPI_NSS_Soft;/定義波特率預(yù)分頻的值:波特率預(yù)分頻值為 256SPI_I ni tStructure.SPI_BaudRatePrescaler= SPI_BaudRatePrescaler_256;讀寫中這
13、里是4/指定數(shù)據(jù)傳輸從 MSB位還是LSB位開始:數(shù)據(jù)傳輸從MS啦開始SPI_I nitStructure.SPI_FirstBit = SPI_FirstBit_MSB;/CRC值計算的多項式SPI_I nitStructure.SPI_CRCPoly nomial = 7;/根據(jù)SPInitStruct中指定的參數(shù)初始化外設(shè)SPIx寄存器SPI_I nit(SPI1, & SPI_I nitStructure);/* En able SPI1 */SPI_Cmd(SPI1, ENABLE); / 使能 SPI 外設(shè)/*SPIx讀寫一個字節(jié)TxData:要寫入的字節(jié)返回值:讀取到的字節(jié)*/u
14、8 SPI1_ReadWriteByte(u8 TxData)while (SPI_l2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) = RESET); /SPI標志位設(shè)置與否:發(fā)送緩存空標志位/* Send byte through the SPI1 peripheral */SPI_I2S_SendData(SPI1, TxData); /通過外設(shè) SPI1 發(fā)送一個數(shù)據(jù)/* Wait to receive a byte */while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) = RESET); /的
15、SPI標志位設(shè)置與否:接受緩存非空標志/* Retur n the byte read from the SPI bus */return SPI_I2S_ReceiveData(SPI1); /返回通過 SPIx 最近接收的數(shù)據(jù)/*tm7705初始化函數(shù)*/SSI位控制/flash檢查指定的檢查指定void TM7705nit(void)un sig ned char i ;CS1_LOW();Delay_us(10);for(i = 0; i 100; i+)SPI1_ReadWriteByte(0xFF); /持續(xù)DIN高電平寫操作,恢復(fù) tm7705接口SPI1_ReadWriteBy
16、te(0x20) ;/存器/*2016 1 21實地測試通過*SPI1_ReadWriteByte(0x08) ;/速率為60Hz,使用內(nèi)部時鐘*/通道1,下一個寫時鐘寄寫時鐘寄存器設(shè)置更新SPI1_ReadWriteByte(0x08);SPI1_ReadWriteByte(0x10) ;/存器/*2016 1 21實地測試通過*SPI1_ReadWriteByte(0x70) ;/雙極性、無緩沖、增益為2、濾波器不工作、自校準通道1,下一個寫設(shè)置寄寫設(shè)置寄存器,設(shè)置成*SPI1_ReadWriteByte(0x70);Delay_us(10);CS1_HIGH();CS2_LOW();De
17、lay_us(10);for(i = 0; i 100; i+)SPI1_ReadWriteByte(0xFF); /1415/SPI1_ReadWriteByte(0x20) ;/存器/SPI1_ReadWriteByte(0x09) ;/率為60Hz,使用內(nèi)部時鐘/SPI1_ReadWriteByte(0x10) ;/存器/SPI1_ReadWriteByte(0x78) ;/持續(xù)DIN高電平寫操作,恢復(fù) tm7705接口通道1 ,下一個寫時鐘寄 寫時鐘寄存器設(shè)置更新速 通道1,下一個寫設(shè)置寄 寫設(shè)置寄存器,設(shè)置成雙極性、無緩沖、增益為0、濾波器不工作、自校準通道1 ,下一個寫時鐘寄SPI
18、1_ReadWriteByte(0x20) ;/存器SPI1_ReadWriteByte(0x08);率為60Hz,使用內(nèi)部時鐘SPI1_ReadWriteByte(0x10); 存器SPI1_ReadWriteByte(0x70);Delay_us(10);CS2_HIGH();CS3_L0W();Delay_us(10);for(i = 0; i 100; i+)SPI1_ReadWriteByte(0xFF); /寫時鐘寄存器設(shè)置更新速/通道1 ,下一個寫設(shè)置寄持續(xù)DIN高電平寫操作,恢復(fù) tm7705接口SPI1_ReadWriteByte(0x20) ;/存器SPI1_ReadWri
19、teByte(0x08) ;/率為60Hz,使用內(nèi)部時鐘SPI1_ReadWriteByte(0x10) ;/存器SPI1_ReadWriteByte(0x70) ;/極性、無緩沖、增益為0、濾波器不工作、自校準通道1,下一個寫時鐘寄寫時鐘寄存器設(shè)置更新速通道1,下一個寫設(shè)置寄 寫設(shè)置寄存器,設(shè)置成雙Delay_us(10);CS3_HIGH();CS4_LOW();Delay_us(10);for(i = 0; i 2)break;i=0;if(DRDY1_LOW()=0)CS1_LOW(); Delay_us(10);for the commto read data registerfor
20、SPI1_ReadWriteByte(0x38);/comma nd channel 1 (dec 56)/read 16bit of data ADChighByte = SPI1_ReadWriteByte(0xFF); lowByte = SPI1_ReadWriteByte(0xFF);adcValue = highByte 2)break;i=0;if(DRDY2_LOW()=0)CS2_LOW();Delay_us(10);for the commto read data registerforSPI1_ReadWriteByte(0x38);/comma nd channel 1 (dec 56)/read 16bit of data ADChighByte = SPI1_ReadWriteByte(0xFF); lowByte = SPI1_ReadWriteByte(0xFF);adcValue = highByte 2)break;i=0;if(DRDY3_LOW()=0)CS3_LOW();Delay_us(10);SPI1_Re
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 腎性高血壓的治療
- 做課件軟件教學(xué)課件
- 活動安全應(yīng)急預(yù)案
- 1.1.1反應(yīng)熱 焓變 課件 高二上學(xué)期化學(xué)人教版(2019)選擇性必修1
- 吉林省2024七年級數(shù)學(xué)上冊第1章有理數(shù)1.12有理數(shù)的混合運算課件新版華東師大版
- 犬皮膚癬菌病開題報告
- 踩高蹺大班教案反思
- 肝門部膽管癌輔助治療
- 讓友誼之樹常青說課稿
- 花點心說課稿
- (完整版)青年就業(yè)創(chuàng)業(yè)見習(xí)基地匯報材料(完整版)
- 月光(羽泉)原版五線譜鋼琴譜正譜樂譜.docx
- 660MW機組空預(yù)器聲波吹灰器可行性研究報告最新(精華版)
- 控制柜安裝施工方案
- 七年級歷史教案:林則徐的教學(xué)設(shè)計
- 動車組火災(zāi)檢測(報警)系統(tǒng)
- 水面垃圾自動打撈船的設(shè)計 (全套圖紙)
- 煙草企業(yè)安全生產(chǎn)標準化 規(guī)范
- 裝飾施工技術(shù)標準及要求
- 2018秋七年級虎外考試卷英語試卷
- 河洛擇日法[技巧]
評論
0/150
提交評論