
专业版
lis2dw12
706
0
0
1
简介
使用立创地阔星驱动lis2dw12
简介:使用立创地阔星驱动lis2dw12开源协议
:GPL 3.0
创建时间:2025-02-25 09:45:40更新时间:2025-03-10 10:08:06
描述
硬件准备
- 立创地阔星
- lis2dw12 模块(本项目硬件)
- usb转ttl
- 杜邦线若干
- jlink 或stlink
软件准备
- cube ide 1.8
- xshell 或者其他串口调试助手
接线
]
注意
- 需要使用图形化工具实现IIC0 和串口0
代码实现
- 首先从官方github 下载lis2dw12_pid驱动程序,从中拿出lis2dw12_reg.c 和.h
- 参考官方驱动中


- 首先在主函数头文件中添加驱动程序
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include
#include
#include "lis2dw12_reg.h"
#define BOOT_TIME 20 //ms
static int16_t data_raw_acceleration[3];
static float_t acceleration_mg[3];
static uint8_t whoamI, rst;
static uint8_t tx_buffer[1000];
static int32_t platform_write(void *handle, uint8_t reg, const uint8_t *bufp,uint16_t len)
{
HAL_I2C_Mem_Write(handle, LIS2DW12_I2C_ADD_H, reg, I2C_MEMADD_SIZE_8BIT, (uint8_t*) bufp, len, 1000);
}
static int32_t platform_read(void *handle, uint8_t reg, uint8_t *bufp,uint16_t len)
{
HAL_I2C_Mem_Read(handle, LIS2DW12_I2C_ADD_H, reg, I2C_MEMADD_SIZE_8BIT, bufp, len, 1000);
}
static void tx_com( uint8_t *tx_buffer, uint16_t len )
{
HAL_UART_Transmit(&huart1, tx_buffer, len, 1000);
}
static void platform_delay(uint32_t ms)
{
HAL_Delay(ms);
}
static void platform_init(void)
{
}
/* USER CODE END Includes */
- 再将主函数替换掉
int main(void)
{
/* 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 */
/* Initialize mems driver interface */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_I2C1_Init();
MX_USART1_UART_Init();
/* USER CODE BEGIN 2 */
/* Initialize mems driver interface */
stmdev_ctx_t dev_ctx;
dev_ctx.write_reg = platform_write;
dev_ctx.read_reg = platform_read;
dev_ctx.mdelay = platform_delay;
dev_ctx.handle = &hi2c1;
/* Initialize platform specific hardware */
platform_init();
/* Wait sensor boot time */
platform_delay(BOOT_TIME);
/* Check device ID */
lis2dw12_device_id_get(&dev_ctx, &whoamI);
if (whoamI != LIS2DW12_ID)
while (1) {
/* manage here device not found */
}
/* Restore default configuration */
lis2dw12_reset_set(&dev_ctx, PROPERTY_ENABLE);
do {
lis2dw12_reset_get(&dev_ctx, &rst);
} while (rst);
/* Enable Block Data Update */
lis2dw12_block_data_update_set(&dev_ctx, PROPERTY_ENABLE);
/* Set full scale */
//lis2dw12_full_scale_set(&dev_ctx, LIS2DW12_8g);
lis2dw12_full_scale_set(&dev_ctx, LIS2DW12_2g);
/* Configure filtering chain
* Accelerometer - filter path / bandwidth
*/
lis2dw12_filter_path_set(&dev_ctx, LIS2DW12_LPF_ON_OUT);
lis2dw12_filter_bandwidth_set(&dev_ctx, LIS2DW12_ODR_DIV_4);
/* Configure power mode */
lis2dw12_power_mode_set(&dev_ctx, LIS2DW12_HIGH_PERFORMANCE);
//lis2dw12_power_mode_set(&dev_ctx, LIS2DW12_CONT_LOW_PWR_LOW_NOISE_12bit);
/* Set Output Data Rate */
lis2dw12_data_rate_set(&dev_ctx, LIS2DW12_XL_ODR_25Hz);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
uint8_t reg;
/* Read output only if new value is available */
lis2dw12_flag_data_ready_get(&dev_ctx, ®);
if (reg) {
/* Read acceleration data */
memset(data_raw_acceleration, 0x00, 3 * sizeof(int16_t));
lis2dw12_acceleration_raw_get(&dev_ctx, data_raw_acceleration);
// acceleration_mg[0] = lis2dw12_from_fs8_lp1_to_mg(data_raw_acceleration[0]);
// acceleration_mg[1] = lis2dw12_from_fs8_lp1_to_mg(data_raw_acceleration[1]);
// acceleration_mg[2] = lis2dw12_from_fs8_lp1_to_mg(data_raw_acceleration[2]);
acceleration_mg[0] = lis2dw12_from_fs2_to_mg(data_raw_acceleration[0]);
acceleration_mg[1] = lis2dw12_from_fs2_to_mg(data_raw_acceleration[1]);
acceleration_mg[2] = lis2dw12_from_fs2_to_mg(data_raw_acceleration[2]);
snprintf((char *)tx_buffer, sizeof(tx_buffer),
"Acceleration [mg]:%6.2f %6.2f %6.2f\r\n",
acceleration_mg[0], acceleration_mg[1], acceleration_mg[2]);
tx_com(tx_buffer, strlen((char const *)tx_buffer));
}
}
/* USER CODE END 3 */
}
- 最后下载程序完成调试
目前开源硬件,10个赞开源源代码。
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。










