SPIM ADXL345
SPIM ADXL345示例实现了SPI读取ADXL345的加速度数据并打印到UART终端。
SPIM ADXL345示例的源代码和工程文件位于:SDK_Folder\projects\peripheral\spi\spi_master_adxl345,其中工程文件在文件夹Keil_5下。
代码理解
示例工程流程图如图 30所示:
- 初始化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。
- 通过hal_spi_read_eeprom()接口从ADXL345读取数。代码如下:
wdata[0] = read_cmd + 0x0; hal_spi_read_eeprom(&g_spim_handle, wdata, rdata, 1, 1, 5000); - 通过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); - 通过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);
测试验证
- 用GProgrammer下载spim_adxl345.bin至开发板。
- 将开发板串口连接至PC端,打开并配置GRUart。
- 在GRUart的Receive Data窗口中将会显示从ADXL345传感器获取的数据。