CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!

SPIM ADXL345

SPIM ADXL345示例实现了SPI读取ADXL345的加速度数据并打印到UART终端。

SPIM ADXL345示例的源代码和工程文件位于:SDK_Folder\projects\peripheral\spi\spi_master_adxl345,其中工程文件在文件夹Keil_5下。

代码理解

示例工程流程图如图 30所示:

图 30 SPIM ADXL345示例流程图
  1. 初始化SPIM ADXL345。
    g_spim_handle.init.data_size  = SPI_DATASIZE_8BIT;
    g_spim_handle.init.clock_polarity = SPI_POLARITY_HIGH;
    g_spim_handle.init.clock_phase  = SPI_PHASE_2EDGE;
    g_spim_handle.init.baudrate_prescaler = SystemCoreClock / 2000000;
    g_spim_handle.init.ti_mode   = SPI_TIMODE_DISABLE;
    g_spim_handle.init.slave_select = SPI_SLAVE_SELECT_0;
    
    hal_spi_init(&g_spim_handle);
    

    SPI详细配置参数设置请参考SPIM DMA

  2. 通过hal_spi_read_eeprom()接口从ADXL345读取数。代码如下:
    wdata[0] = read_cmd + 0x0;
    hal_spi_read_eeprom(&g_spim_handle, wdata, rdata, 1, 1, 5000);
    
  3. 通过hal_spi_transmit()接口向ADXL345发送数据。代码如下:
    /* normal, 100Hz */
    wdata[0] = write_cmd + 0x2C;
    wdata[1] = 0x0A;
    wdata[2] = 0x08;
    wdata[3] = 0x00;
    hal_spi_transmit(&g_spim_handle, wdata, 4, 5000);
    
    /* full-bits, 4mg/LSB */
    wdata[0] = write_cmd + 0x31;
    wdata[1] = 0x09;
    hal_spi_transmit(&g_spim_handle, wdata, 2, 5000);
    
    /* FIFO flow */
    wdata[0] = write_cmd + 0x38;
    wdata[1] = 0x80;
    hal_spi_transmit(&g_spim_handle, wdata, 2, 5000);
    
  4. 通过hal_spi_read_eeprom()接口从ADXL345读取数据。
    wdata[0] = read_cmd + 0x1D;
    hal_spi_read_eeprom(&g_spim_handle, wdata, rdata, 1, 29, 5000);
    
    wdata[0] = read_cmd + 0x32;
    hal_spi_read_eeprom(&g_spim_handle, wdata, rdata, 1, 6, 5000);
    

测试验证

  1. 用GProgrammer下载spim_adxl345.bin至开发板。
  2. 将开发板串口连接至PC端,打开并配置GRUart。
  3. 在GRUart的Receive Data窗口中将会显示从ADXL345传感器获取的数据。

扫描关注

打开微信,使用“扫一扫”即可关注。