資源簡介
stm32 親測能用,無情奉獻,實現mpu9250各軸數據的讀取

代碼片段和文件信息
#include?“mpu_9250.h“
MPU_value?mpu_value;??????????//9軸數據
unsigned?char?BUF[6];???????//接收數據緩存區
/***************************************************************/
void?spi_Init()
{
SPI_InitTypeDef?SPI_InitStructure;
GPIO_InitTypeDef?GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1|RCC_APB2Periph_GPIOA?ENABLE);
//GPIO口配置設置//
GPIO_InitStructure.GPIO_Pin?=?GPIO_Pin_5?|?GPIO_Pin_6?|?GPIO_Pin_7;
??GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;
??GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_AF_PP;
??GPIO_Init(GPIOA?&GPIO_InitStructure);
GPIO_SetBits(GPIOAGPIO_Pin_5?|?GPIO_Pin_6?|?GPIO_Pin_7);
????/*Configure?PA.4(NSS)--------------------------------------------*/
??GPIO_InitStructure.GPIO_Pin?=GPIO_Pin_0;
??GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
??GPIO_InitStructure.GPIO_Speed?=?GPIO_Speed_50MHz;
??GPIO_Init(GPIOA?&GPIO_InitStructure);
GPIO_SetBits(GPIOAGPIO_Pin_0);
?/*?SPI1?configuration?*/?
??SPI_InitStructure.SPI_Direction?=?SPI_Direction_2Lines_FullDuplex;
??SPI_InitStructure.SPI_Mode?=?SPI_Mode_Master; //主機模式
??SPI_InitStructure.SPI_DataSize?=?SPI_DataSize_8b;?//8位數據
??SPI_InitStructure.SPI_CPOL?=?SPI_CPOL_High;//SPI_CPOL_High=模式3,時鐘空閑為高?//SPI_CPOL_Low=模式0,時鐘空閑為低
??SPI_InitStructure.SPI_CPHA?=?SPI_CPHA_2Edge;//SPI_CPHA_2Edge;//SPI_CPHA_1Edge?SPI_CPHA_2Edge;
??SPI_InitStructure.SPI_NSS?=?SPI_NSS_Soft;//SPI_NSS_Soft;//SPI_NSS_Hard
??SPI_InitStructure.SPI_BaudRatePrescaler?=?SPI_BaudRatePrescaler_8;//SPI_BaudRatePrescaler_2=32M;//SPI_BaudRatePrescaler_4=18MHz
??SPI_InitStructure.SPI_FirstBit?=?SPI_FirstBit_MSB;//數據從高位開始發送
??SPI_InitStructure.SPI_CRCPolynomial?=?7;
SPI_Init(SPI1?&SPI_InitStructure);??//根據SPI_InitStruct中指定的參數初始化外設SPIx寄存器
SPI_Cmd(SPI1?ENABLE);?//使能SPI外設
}
/***************************************************************/
//SPIx?
//TxData:發送一個字節
//返回值:data
/***************************************************************/
static?u8?SPI1_ReadWriteByte(u8?TxData)
{
u8?retry=0; ?
while?(SPI_I2S_GetFlagStatus(SPI1?SPI_I2S_FLAG_TXE)?==?RESET)?//等待SPI發送標志位空
{
retry++;
if(retry>200)return?0;
} ??
SPI_I2S_SendData(SPI1?TxData);?//發送數據
retry=0;
while?(SPI_I2S_GetFlagStatus(SPI1?SPI_I2S_FLAG_RXNE)?==?RESET)?//等待SPI接收標志位空
{
retry++;
if(retry>200)return?0;
} ?? ????
return?SPI_I2S_ReceiveData(SPI1);?//接收數據 ????
}
/***************************************************************/
//SPI發送
//reg:?addr
//value:數據
/***************************************************************/
u8?MPU9250_Write_Reg(u8?regu8?value)
{
u8?status;
MPU_9250_ENABLE;???// MPU9250_CS=0;??//片選MPU9250
status=SPI1_ReadWriteByte(reg);?//發送reg地址
SPI1_ReadWriteByte(value);//發送數據
MPU_9250_DISENABLE;// MPU9250_CS=1;??//失能MPU9250
return(status);//
}
//---------------------------------------------------------------//
//SPI讀取
//reg:?addr
u8?MPU9250_Read_Reg(u8?reg)
{
??u8?reg_val;
MPU_9250_ENABLE;// MPU9250_CS=0;??
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-05-12?11:32??9250_stm32\
?????文件????????9490??2018-04-24?17:02??9250_stm32\mpu_9250.c
?????文件????????3771??2018-04-24?16:57??9250_stm32\mpu_9250.h
評論
共有 條評論