本帖最后由 power568 于 2016-2-29 14:58 编辑 哪位大侠玩过STM32F4 + MPU9250使用SPI方式读取数据,倒腾了两天,读取 WHO_AM_I 寄存器时,只有第一次读取成功,以后都失败: 读取ID寄存器时,仿真第一次读出为0x71,后续就不正确了. 是否有人赐教... SPI配置代码如下: GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; RCC_AHB1PeriphClockCmd( SPI_MPU_CS_RCC_CLK | SPI_MPU_MISO_RCC_CLK | SPI_MPU_MOSI_RCC_CLK | SPI_MPU_SCK_RCC_CLK, ENABLE ); RCC_APB1PeriphClockCmd( SPI_MPU_SPI_RCC_CLK, ENABLE ); GPIO_PinAFConfig(SPI_MPU_SCK_PORT, SPI_MPU_SCK_PIN_SOURCE, SPI_MPU_AF); GPIO_PinAFConfig(SPI_MPU_MISO_PORT, SPI_MPU_MISO_PIN_SOURCE, SPI_MPU_AF); GPIO_PinAFConfig(SPI_MPU_MOSI_PORT, SPI_MPU_MOSI_PIN_SOURCE, SPI_MPU_AF); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //// MISO GPIO_InitStructure.GPIO_Pin = SPI_MPU_MISO_PIN; GPIO_Init(SPI_MPU_MISO_PORT, &GPIO_InitStructure); //// MOSI GPIO_InitStructure.GPIO_Pin = SPI_MPU_MOSI_PIN; GPIO_Init(SPI_MPU_MOSI_PORT, &GPIO_InitStructure); //// SCK GPIO_InitStructure.GPIO_Pin = SPI_MPU_SCK_PIN; GPIO_Init(SPI_MPU_SCK_PORT, &GPIO_InitStructure); //// CS GPIO_InitStructure.GPIO_Pin = SPI_MPU_CS_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(SPI_MPU_CS_PORT, &GPIO_InitStructure); SPI_MPU_CS_HIGH(); SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; SPI_InitStructure.SPI_Mode = SPI_Mode_Master; SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256; //// SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPI_InitStructure.SPI_CRCPolynomial = 7; SPI_Init(SPI_MPU_SPI_PORT, &SPI_InitStructure); SPI_Cmd(SPI2, ENABLE); |
评分
查看全部评分
谢谢你的建议!!!