資源簡介
ADS1256 包含.c.h文件 stm32f407 SPI,用4個IO與ADS1256 通訊,親測可用。

代碼片段和文件信息
#include?“ads1256.h“
u32?ADS_Value[8];
/*******************************************************************************
*?Function?Name??:?SPI_FLASH_Init
*?Description????:?Initializes?the?peripherals?used?by?the?SPI?FLASH?driver.
*?Input??????????:?None
*?Output?????????:?None
*?Return?????????:?None
*******************************************************************************/
void?SPI_ADS1256_Init(void)
{
??GPIO_InitTypeDef??GPIO_InitStructure;
??SPI_InitTypeDef??SPI_InitStructure;
??RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB?ENABLE);//使能GPIOB時鐘
??RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1?ENABLE);//使能SPI1時鐘
?
??//GPIOFB345初始化設置
??GPIO_InitStructure.GPIO_Pin?=?GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;//PB3~5復用功能輸出
??GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_AF;//復用功能
??GPIO_InitStructure.GPIO_OType?=?GPIO_OType_PP;//推挽輸出
??GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_100MHz;//100MHz
??GPIO_InitStructure.GPIO_PuPd?=?GPIO_PuPd_UP;//上拉
??GPIO_Init(GPIOB?&GPIO_InitStructure);//初始化
GPIO_PinAFConfig(GPIOBGPIO_PinSource3GPIO_AF_SPI1);?//PB3復用為?SPI1
GPIO_PinAFConfig(GPIOBGPIO_PinSource4GPIO_AF_SPI1);?//PB4復用為?SPI1
GPIO_PinAFConfig(GPIOBGPIO_PinSource5GPIO_AF_SPI1);?//PB5復用為?SPI1
?
//這里只針對SPI口初始化
RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1ENABLE);//復位SPI1
RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1DISABLE);//停止復位SPI1
??/*?SPI1?configuration?*/
??//?在SCLK下降沿,系統通過DIN向1256發送數據?
??//?在SCLK上升沿,系統通過DOUT?讀取1256數據
SPI_InitStructure.SPI_Direction?=?SPI_Direction_2Lines_FullDuplex;??//設置SPI單向或者雙向的數據模式:SPI設置為雙線雙向全雙工
SPI_InitStructure.SPI_Mode?=?SPI_Mode_Master; //設置SPI工作模式:設置為主SPI
SPI_InitStructure.SPI_DataSize?=?SPI_DataSize_8b; //設置SPI的數據大小:SPI發送接收8位幀結構
SPI_InitStructure.SPI_CPOL?=?SPI_CPOL_Low; //串行同步時鐘的空閑狀態為高電平
SPI_InitStructure.SPI_CPHA?=?SPI_CPHA_2Edge; //串行同步時鐘的第二個跳變沿(上升或下降)數據被采樣
SPI_InitStructure.SPI_NSS?=?SPI_NSS_Soft; //NSS信號由硬件(NSS管腳)還是軟件(使用SSI位)管理:內部NSS信號有SSI位控制
SPI_InitStructure.SPI_BaudRatePrescaler?=?SPI_BaudRatePrescaler_128; //定義波特率預分頻的值:波特率預分頻值為256
SPI_InitStructure.SPI_FirstBit?=?SPI_FirstBit_MSB; //指定數據傳輸從MSB位還是LSB位開始:數據傳輸從MSB位開始
SPI_InitStructure.SPI_CRCPolynomial?=?7; //CRC值計算的多項式
SPI_Init(SPI1?&SPI_InitStructure);??//根據SPI_InitStruct中指定的參數初始化外設SPIx寄存器
?
SPI_Cmd(SPI1?ENABLE);?//使能SPI外設
SPI_SendByte(0xff);//啟動傳輸
?
??ADS1256_GPIO_init();
??ADS1256_Init();
??//SPI1_SetSpeed(SPI_BaudRatePrescaler_4); //設置為21M時鐘高速模式
}
//SPI1速度設置函數
//SPI速度=fAPB2/分頻系數
//@ref?SPI_BaudRate_Prescaler:SPI_BaudRatePrescaler_2~SPI_BaudRatePrescaler_256??
//fAPB2時鐘一般為84Mhz:
void?SPI1_SetSpeed(u8?SPI_BaudRatePrescaler)
{
??assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_BaudRatePrescaler));//判斷有效性
SPI1->CR1&=0XFFC7;//位3-5清零,用來設置波特率
SPI1->CR1|=SPI_BaudRatePrescaler; //設置SPI1速度?
SPI_Cmd(SPI1ENABLE);?//使能SPI1
}?
/*******************************************************************************
*?Function?Name??:?SPI_FLASH_SendByte
*?Description????:?Sends?a?byte?throug
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????13152??2018-01-31?15:34??ADS1256.c
?????文件???????3964??2018-01-31?15:21??ads1256.h
-----------?---------??----------?-----??----
????????????????17116????????????????????2
評論
共有 條評論