[资料] 【LinkIt 7687试用体验】RTOS第四篇

[复制链接]

技术员

发表于 2017-1-3 19:59:03   1137 查看 3 回复 显示全部楼层 倒序浏览
分享

硬件:
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
  }
}
1.png



技术员

发表于 2017-1-4 17:52:51  
要是能再深入一点的分析就好了
回复

点赞 举报

技术员

发表于 2017-1-5 11:07:33    楼主|

PCB在线计价下单

板子大小:

cm
X
cm

层数:

2

板子数量:

10

厚度:

1.6
倪love 发表于 2017-1-4 17:52
要是能再深入一点的分析就好了

谢谢提醒 下次注意下,这个是最近在弄得一个案子中的模块
回复

点赞 举报

工程师

发表于 2017-8-14 09:34:26  
好东西,学习一下!!!
回复

点赞 举报

只有小组成员才能发言,加入小组>>

76个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表
-

推荐专区

技术干货集中营

专家问答

用户帮助┃咨询与建议┃版主议事

工程师杂谈

工程师创意

工程师职场

论坛电子赛事

社区活动专版

发烧友活动

-

嵌入式论坛

ARM技术论坛

Android论坛

Linux论坛

单片机/MCU论坛

FPGA|CPLD|ASIC论坛

DSP论坛

嵌入式系统论坛

-

电源技术论坛

电源技术论坛

无线充电技术

-

硬件设计论坛

PCB设计论坛

电路设计论坛

电子元器件论坛

控制|传感

总线技术|接口技术

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术专区

仪器仪表技术专区

-

EDA设计论坛

multisim论坛

PADS技术论坛

Protel|AD|DXP论坛

Allegro论坛

proteus论坛|仿真论坛

EasyEDA-中国人自已的EDA工具

Orcad论坛

-

综合技术与应用

电机控制

智能电网

光电及显示

参考设计中心

汽车电子技术论坛

医疗电子论坛

-

开源硬件

-

无线通信论坛

无线通信技术专区

天线|RF射频|微波|雷达技术

-

IC设计论坛

芯片测试与失效分析

Mixed Signal/SOC[数模混合芯片设计]

Analog/RF IC设计

设计与制造封装测试

-

厂商专区

TI论坛

TI Deyisupport社区

-

检测技术与质量

电磁兼容(EMC)设计与整改

安规知识论坛

检测与认证

-

消费电子论坛

手机技术论坛

平板电脑/mid论坛

音视/视频/机顶盒论坛

-

电子论坛综合区

聚丰众筹官方社区

新人报道区

聚丰供应链

-

论坛服务区

-

供求信息发布

供需广告

招聘┃求职发布区

电子展览展会专区