ZHCAEZ5 February   2025 CC1310

 

  1.   1
  2.   摘要
  3.   商标
  4. 1引言
    1. 1.1 楼宇自动化中的传感器控制器
    2. 1.2 TI 器件
      1. 1.2.1 CC13x4 无线 MCU
      2. 1.2.2 CC26xx 无线 MCU
  5. 2传感器控制器
    1. 2.1 特性
    2. 2.2 传感器控制器电源模式
      1. 2.2.1 工作模式
      2. 2.2.2 低功耗模式
      3. 2.2.3 待机模式
      4. 2.2.4 在电源模式之间切换
        1. 2.2.4.1 24MHz — 从待机状态启动并恢复待机状态的能量
        2. 2.2.4.2 2MHz — 从待机状态启动并恢复待机状态的能量
    3. 2.3 功率测量设置
      1. 2.3.1 EnergyTrace™ 软件
      2. 2.3.2 软件
      3. 2.3.3 电流消耗测量
      4. 2.3.4 硬件
  6. 3使用传感器控制器的楼宇自动化用例与技术
    1. 3.1 PIR 运动检测
      1. 3.1.1 PIR 传统信号链
      2. 3.1.2 无电容器运动检测方框图
      3. 3.1.3 数字信号处理
        1. 3.1.3.1 硬件
        2. 3.1.3.2 数字信号处理
    2. 3.2 玻璃破裂检测
      1. 3.2.1 低功耗与低成本玻璃破裂方框图
    3. 3.3 门窗传感器
    4. 3.4 低功耗 ADC
      1. 3.4.1 Sensor Controller Studio 中的代码实现
      2. 3.4.2 测量
    5. 3.5 使用 BOOSTXL-ULPSENSE 的不同传感器读数
      1. 3.5.1 电容式触控
      2. 3.5.2 模拟光传感器
      3. 3.5.3 电位器(0 至 200kΩ 范围)
      4. 3.5.4 超低功耗 SPI 加速度计
      5. 3.5.5 簧片开关
  7. 4总结
  8. 5参考资料

Sensor Controller Studio 中的代码实现

下面介绍 Sensor Controller Studio 中的 ADC 代码实现。

首先配置所需的数据结构和任务资源:

数据结构:

  • cfg
    • 分辨率 = 8
  • 输出
    • value
  • state
    • isLarger
    • nextVal

任务资源:

  • 模拟引脚
    • PIN_ANALOG
  • COMPA
  • 参考 DAC
  • 基于 RTC 的执行调度
  • 延迟插入

C 代码

初始化代码:

//Select SAR ADC input pin compaSelectGpioInput(AUXIO_A_PIN_ANALOG); fwScheduleTask(1);

执行代码:

//Enable comparator compaEnable(COMPA_PWRMODE_ANY); 

state.nextVal = 0x0080; // 1/2 VDD 

output.value = 0; //Set the reference DAC output to 1/2 VDD refdacStartOutputOnCompaRef(state.nextVal); refdacEnable(REFDAC_PWRMODE_ANY,REFDAC_REF_VDDS); 

U16 currBit = cfg.resolution; 
U16 step = 64; 

while(currBit > 0){ //Update DAC value refdacChangeOutputValue(state.nextVal); //Wait for DAC to stabilize... 
//An additional slight delay for DAC and comparator to stabilize... 
refdacWaitForStableOutput(); 

fwDelayUs(10); //Read comparator output compaGetOutput(state.isLarger); if(state.isLarger == 1){ 
state.nextVal += step; //Increase DAC value for next iteration 
}
else{ 
state.nextVal -= step; //Decrease DAC value for next iteration 
} 

step >>= 1; //Divide step by 2 
currBit -= 1; 

//Update output value 
output.value |= (state.isLarger << currBit); 
} 
refdacStopOutput(); 

compaSelectIntRef(COMPA_REF_VSS); //Disable peripherals 
refdacDisable(); 
compaDisable(); 
fwScheduleTask(1);

终止代码:

//Disable peripherals 
refdacDisable(); 
compaDisable();