TPMS方案 接收器 STM8L篇

TPMS方案 接收器 STM8L篇
使用stm8l052r8芯片 无线接收使用华普2219B
概要:
使用公模开发
低功耗太阳能方案,使用lcd液晶显示,太阳能充电,自动唤醒
主机提供设置功能:包含设置温度单位,压力单位,轮胎匹配,温度范围,压力范围,恢复出厂设置

接收主机可对压力异常,温度异常,电池电量进行报警
压力报警信息包含 超出范围和压力下降,压力范围默认是180-300kpa,如果超出此范围主机会响起蜂鸣器并且对应的数据会闪烁,压力下降时,蜂鸣器鸣叫两声,并闪烁对应的数据。
温度报警信息,包含高温报警,高温范围是75摄氏度,此时响起蜂鸣器并且对应的数据会闪烁
传感器电池电量报警:低于2.2v时此时会报警,蜂鸣器会响起,并且对应的轮胎闪烁
硬件原理图:
TPMS方案 接收器 STM8L篇_第1张图片

软件执行流程:
while(1)
{
读取无线胎压数据;
处理读取的胎压数据;
显示报警信息;
处理按键功能;
检测震动状态;
检查休眠唤醒状态;
显示接收器电池信息;
}
协议:
调制方式:FSK
频率: 433.920 MHz
频偏: 20.0 kHz
编码: Manchester
曼彻斯特类型: 10=One, 01=Zero
传输速率: 9.6 kbps
负载字节位起始: msb
前导码长度: 12(可根据需求调整长度,减少功耗)
前导码数据:0x00
同步码长度:1-byte
同步码: 0x01
数据长度:8

功耗:
此产品为太阳供电产品,一般平时太阳能供电能满足日常需求
接收器总体工作电流大概6.8mA,接收器休眠电流<30uA.
stm8l052主控芯片工作电流3mA,待机电流为0.3uA。
无线接收芯片2219B工作模式包含低功耗模式,根据协议可控制工作电流为1.5mA。
根据2219B的数据手册可以配置相应的低功耗工作模式来满足功耗要求。

功能实现:
lcd部分:
使用外部4.5v电源驱动lcd部分,下面是初始化代码

  CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE);

  CLK_PeripheralClockConfig(CLK_Peripheral_LCD, ENABLE);
  CLK_RTCClockConfig(CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_1);
  
  LCD_Init(LCD_Prescaler_2, LCD_Divider_22, LCD_Duty_1_8,LCD_Bias_1_4, LCD_VoltageSource_External);
  
  LCD_PortMaskConfig(LCD_PortMaskRegister_0, 0xFF);   
  LCD_PortMaskConfig(LCD_PortMaskRegister_1, 0xFF);   
  LCD_PortMaskConfig(LCD_PortMaskRegister_2, 0x03);   
  LCD_PortMaskConfig(LCD_PortMaskRegister_3, 0x00);
  
  LCD_ContrastConfig(LCD_Contrast_Level_7);
  LCD_DeadTimeConfig(LCD_DeadTime_0);
  LCD_PulseOnDurationConfig(LCD_PulseOnDuration_4);
  
  LCD_Cmd(ENABLE);

各个显示接口定义:

void lcd_show_pressure_unit(uint8_t u);
void lcd_show_temerature_unit(uint8_t u);
void lcd_show_tpms(uint8_t u);
void lcd_show_solar(uint8_t u);
void lcd_show_tmperature_warning(uint8_t u);
void lcd_show_battery_low_warning(uint8_t u);
//压力警告图标
void lcd_show_pressure_leak(uint8_t u);
void lcd_show_pressure_high(uint8_t u);
void lcd_show_pressure_low(uint8_t u);

void lcd_show_battery(uint8_t u);
void lcd_show_battery_empty(uint8_t u);

void lcd_show_pressure(uint8_t uNo,uint8_t type,uint8_t value,uint8_t uShow);
void lcd_show_temperature(uint8_t uNo,int16_t value,uint8_t uShow);

RF接收初始化:

  uint8_t tmp;

  CMT2300A_InitGpio();
  CMT2300A_Init();

  /* Config registers */
  CMT2300A_ConfigRegBank(CMT2300A_CMT_BANK_ADDR       , g_cmt2300aCmtBank       , CMT2300A_CMT_BANK_SIZE       );
  CMT2300A_ConfigRegBank(CMT2300A_SYSTEM_BANK_ADDR    , g_cmt2300aSystemBank    , CMT2300A_SYSTEM_BANK_SIZE    );
  CMT2300A_ConfigRegBank(CMT2300A_FREQUENCY_BANK_ADDR , g_cmt2300aFrequencyBank , CMT2300A_FREQUENCY_BANK_SIZE );
  CMT2300A_ConfigRegBank(CMT2300A_DATA_RATE_BANK_ADDR , g_cmt2300aDataRateBank  , CMT2300A_DATA_RATE_BANK_SIZE );
  CMT2300A_ConfigRegBank(CMT2300A_BASEBAND_BANK_ADDR  , g_cmt2300aBasebandBank  , CMT2300A_BASEBAND_BANK_SIZE  );
  CMT2300A_ConfigRegBank(CMT2300A_TX_BANK_ADDR        , g_cmt2300aTxBank        , CMT2300A_TX_BANK_SIZE        );

  // xosc_aac_code[2:0] = 2
  tmp = (~0x07) & CMT2300A_ReadReg(CMT2300A_CUS_CMT10);
  CMT2300A_WriteReg(CMT2300A_CUS_CMT10, tmp|0x02);

  RF_Config();

2219B低功耗设置说明:
2219B工作电流为8mA。
RF接收模块低功耗运行时需要调整工作模式,2219b提供12种低功耗运行模式,用户可根据需要自己选择,这里使用模式6来接收数据。
胎压数据一般是以固定长度发送,模式6适合接收固定长度的数据帧,以本协议为例:
前导码长度12个字节,发送的时间需要 104usX8X12 = 9984us。
低功耗运行原理是设置合适的休眠运行时间。
2219B配置接收前导码需要一个字节,此时运行时间至少设置为1个字节时间长度104X8=832us,整个运行唤醒周期应该小于前导码发送时间,休眠时间最大可设9984-832=9152us,理论上此时功耗应该为全速运行时的1/12。即8X1/12=0.67mA。
在实际应用过程中无线信号受到干扰可能性比较高,设置接收前导码字节应该加长,减少不必要的唤醒,在满足功耗需求的情况下实际应用应当调整休眠时间尽量减少,运行时间尽量增加。这样可减少漏收数据帧的情况

详细代码可见http://www.hoperf.cn/design_guides/640.html

设置功能:

switch(g_menu)
    {
    case setting_pressure_unit:
      set_pressure_unit(btn_type);		//压力单位设置
      break;
    case setting_temperature_unit:
      set_temperture_unit(btn_type);		//温度单位设置
      break;
    case setting_front_low_pressure:
      set_pressure_range(0,btn_type);	//低压范围设置
      break;
    case setting_front_high_pressure:
      set_pressure_range(1,btn_type);	//高压范围设置
      break;
    case setting_temperature:
      set_temperature(btn_type);		//温度范围设置
      break;
    case setting_all_pair:					//轮胎配对
      set_pair(wheel_all,btn_type);
      g_key_state = on_off_btn;
      break;
    case setting_defalut:				//恢复出厂设置
      set_default(btn_type);
      break;
    }

包含设置温度单位,压力单位,轮胎匹配,温度范围,压力范围,恢复出厂设置

文档未完结,持续更新

已实际应用于生产,完整方案文档正在整理持续更新。需要调整外设可邮件联系。
对于此项目有兴趣可以邮件联系,可以提供调试源码寄整套方案探讨
技术沟通邮件:[email protected] QQ:3130984234

你可能感兴趣的:(TPMS方案 接收器 STM8L篇)