完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
硬件: I2C1: GPIO27 --I2C1_SCK和GPIO 28-- I2C1_SDA D13 GPIO34 加速度传感器G_SENSOR:SC7A30E 软件: 描述: 通过轮查询方式检测G_sensor的数值大小来判断是否有震动,从而通过LED的闪烁来通知。 I2C初始化: //2017年1月3日5 G_SENSOR //I2C初始化设定 staticunsigned int TASK_DELAY = 100;//100ms staticunsigned int g_sClkCount = 0;//全局变量 计时 #defineSLAVE_ADDRESS 0x3A //从设备地址 #defineI2C_SEND_DATA_NUMBER 8 //一次读写8位 constuint8_t send_data[6]={0x00,0x00,0x80,0x37,0x0d,0x80};//设置的参数 uint8_treceive_data[3]; //接收的数据 staticvoid IO_init() { //LED初始化 /*GPIO_init*/ hal_gpio_init(HAL_GPIO_34); /* Set pin as GPIO mode.*/ hal_pinmux_set_function(HAL_GPIO_34,HAL_GPIO_34_GPIO34); /* Set GPIO as output.*/ hal_gpio_set_direction(HAL_GPIO_34,HAL_GPIO_DIRECTION_OUTPUT); //I2C初始化 hal_i2c_config_t i2c_init; hal_gpio_init(HAL_GPIO_27); hal_gpio_init(HAL_GPIO_28); hal_pinmux_set_function(HAL_GPIO_27,HAL_GPIO_27_I2C1_CLK); hal_pinmux_set_function(HAL_GPIO_28,HAL_GPIO_28_I2C1_DATA); hal_gpio_pull_up(HAL_GPIO_27); hal_gpio_pull_up(HAL_GPIO_28); i2c_init.frequency =HAL_I2C_FREQUENCY_100K; hal_i2c_master_init(HAL_I2C_MASTER_0,&i2c_init); //设置G_sensor 轮询模式 hal_i2c_master_send_polling(SLAVE_ADDRESS,0X22,&send_data[0],I2C_SEND_DATA_NUMBER);//关闭中断 hal_i2c_master_send_polling(SLAVE_ADDRESS,0X38,&send_data[1],I2C_SEND_DATA_NUMBER);//关闭中断 hal_i2c_master_send_polling(SLAVE_ADDRESS,0X24,&send_data[2],I2C_SEND_DATA_NUMBER);//BOOT hal_i2c_master_send_polling(SLAVE_ADDRESS,0X20,&send_data[3],I2C_SEND_DATA_NUMBER);//ODR:25HZ hal_i2c_master_send_polling(SLAVE_ADDRESS,0X21,&send_data[4],I2C_SEND_DATA_NUMBER);//变化G值 开通高通滤波 hal_i2c_master_send_polling(SLAVE_ADDRESS,0X23,&send_data[5],I2C_SEND_DATA_NUMBER); LOG_I(common, "I2C writesuccessful!"); } //读取G_sensor数据 voidG_sensor() { if(g_sClkCount %50 != 0) return; hal_i2c_master_receive_polling(SLAVE_ADDRESS,0x29,&receive_data[0],I2C_SEND_DATA_NUMBER);//X hal_i2c_master_receive_polling(SLAVE_ADDRESS,0x2a,&receive_data[1],I2C_SEND_DATA_NUMBER);//Y hal_i2c_master_receive_polling(SLAVE_ADDRESS,0x2c,&receive_data[2],I2C_SEND_DATA_NUMBER);//Z return ; } staticvoid read_i2cTask() { portTickType xLastWakeTime = xTaskGetTickCount(); //获取系统时间 for(;;) { g_sClkCount++; // X= receive_data[0] if(receive_data[0]>20||receive_data[1]>50 || receive_data[2]>80)//设定的检测值20 50 80 { LOG_E(common, "######G_sensor Data %d",&receive_data[0]); LOG_E(common, "######G_sensor Data %d",&receive_data[1]); LOG_E(common, "######G_sensor Data %d",&receive_data[2]); hal_gpio_set_output(HAL_GPIO_34,1); vTaskDelay(500 / portTICK_RATE_MS); hal_gpio_set_output(HAL_GPIO_34,0); } else { hal_gpio_set_output(HAL_GPIO_34,0); } vTaskDelayUntil( &xLastWakeTime, (TASK_DELAY / portTICK_RATE_MS ) ); //整个任务运行周期100ms } }
|
|
相关推荐
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
878 浏览 0 评论
【KV260视觉入门套件试用体验】四、KV260 视觉入门套件和固件更新
1444 浏览 0 评论
【KV260视觉入门套件试用体验】Vitis AI Library体验之OCR识别
1098 浏览 0 评论
【KV260视觉入门套件试用体验】Vitis AI 通过迁移学习训练自定义模型
1443 浏览 0 评论
【KV260视觉入门套件试用体验】KV260系列之Petalinux镜像+Resnet 50探索
1115 浏览 0 评论
【AMD KV260视觉入门开发套件试用】4、简单几步体验ubuntu 20.04.3 LTS运行人员检测应用
1603浏览 1评论
810浏览 1评论
【KV260视觉入门套件试用体验】老刘记事儿KV260初体验之Micro-SD选型提速研究(三)
815浏览 1评论
【KV260视觉入门套件试用体验】KV260部署yolov3实现车辆和行人检测
2397浏览 1评论
【KV260视觉入门套件试用体验】基于KV260的人脸识别的实现与展示
813浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-4 10:01 , Processed in 0.622517 second(s), Total 82, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号