ICM-20608读取WHO AM I寄存器问题

2019-07-20 03:30发布

ICM-20608为一6轴传感器与mpu6000差不多只不过功耗低一些,现在想读取WHO AM I寄存区中的0x75,然后由串口发到串口助手
以下是我的代码
int main(void)
{
        uint8_t a=0xF5;//访问 WHO AM I 寄存器的第一个字节0x75|0x80
        uint8_t b=0;
//                uint8_t rxdata=0;
//                uint8_t txdata =  0x6A;
//                uint8_t buf[2]={0};
//                buf[0] = txdata;buf[1]=0x10;


  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration----------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_SPI1_Init();
  MX_UART7_Init();

  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
       

               
                //HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,GPIO_PIN_RESET);//CS拉低
               
    //if(HAL_SPI_Transmit(&hspi1,buf,2,500) != HAL_OK)
                        //return 0;
                //if(HAL_SPI_Receive(&hspi1,&rxdata,1,500) != HAL_OK)
                        //return 0;
               
                HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,GPIO_PIN_SET);//CS拉高
               
                HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,GPIO_PIN_RESET);//CS拉低
    if(HAL_SPI_Transmit(&hspi1, &a, 1, 200)!=HAL_OK)//向WHO AM I 寄存器发送第一个字节
                        return 0;
                if(HAL_SPI_Receive(&hspi1, &b, 1, 200)!=HAL_OK)//接收WHO AM I 寄存器的数据
                   return 0;
                HAL_GPIO_WritePin(GPIOC,GPIO_PIN_2,GPIO_PIN_SET);//CS拉高
               
    HAL_Delay(300);
                HAL_UART_Transmit(&huart7, &b, 1, 200);//串口发送从寄存器得到的数据
               
       

  }

  /* USER CODE END 3 */

}

请大神指点
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
志存高远
1楼-- · 2019-07-20 07:17
我得到的一直是00,数据手册上写的应该是0XAF,上边问题中写错了,0x75是who am i 的地址
a496298685
2楼-- · 2019-07-20 09:10
问题1:你是否正确的设置了SPI的连线呢?
问题2:为什么要操作0x75|0x80?

请核实。
志存高远
3楼-- · 2019-07-20 10:03
 精彩回答 2  元偷偷看……
a496298685
4楼-- · 2019-07-20 15:19
志存高远 发表于 2018-1-25 16:51
1.SPI连线没问题
2. 因为数据手册说SPI读写操作在16个或更多时钟周期(两个或多个字节)内完成。 第一个 ...

TIM截图20180125170309.png

我验证了一下,
我的MPU-6050可以收到115=0x73。
我的MPU-6050收到了104=0x68。

你的ICM-20608其他功能都好用吗?总线上的其他SPI设备好用吗?
志存高远
5楼-- · 2019-07-20 16:18
a496298685 发表于 2018-1-25 17:27
我验证了一下,
我的MPU-6050可以收到115=0x73。
我的MPU-6050收到了104=0x68。

老哥可以进一步交流吗QQ:861688675
志存高远
6楼-- · 2019-07-20 19:27
 精彩回答 2  元偷偷看……

一周热门 更多>