TPMS方案 传感器 infineon篇
硬件原理图
软件说明:
协议
调制方式:FSK
频率: 433.920 MHz
频偏: 20.0 kHz
编码: Manchester
曼彻斯特类型: 10=One, 01=Zero
传输速率: 9.6 kbps
负载字节位起始: msb
前导码长度: 12(可根据需求调整长度,减少功耗)
前导码数据:0x00
同步码长度:1-byte
同步码: 0x01
数据长度:8
调整脉冲图:
数据字节:
Byte0 芯片识别号
Byte1 芯片识别号
Byte2 芯片识别号
Byte3 芯片识别号
Byte4 状态字节
Byte5 压力字节 y = 2x 单位kpa
Byte6 温度字节 y = x-50 单位C
Byte7 校验 前7个字节异或校验
状态机转换图:
状态机转换代码
switch(g_status)
{
case STATUS_INIT:
wake_time = 0x10;
if(pressure > 15)
{
g_status = STATUS_CHANGE;
g_tx_cnt = 0;
g_stable_cnt = 0;
send_flag = 1;
wake_time = 0x01;
}
break;
case STATUS_STABLE:
wake_time = 0x0a;
if(g_max_pressure - g_min_pressure >= 0x05) //10Kpa
{
reset_comprare(pressure);
g_status = STATUS_CHANGE;
g_tx_cnt = 0;
g_stable_cnt = 0;
send_flag = 1;
wake_time = 0x01;
}
if(acceleration_convert() > 0x2F)
{
g_status = STATUS_ROLL;
g_tx_cnt = 0;
g_stable_cnt = 0;
send_flag = 1;
wake_time = 0x05;
}
break;
case STATUS_CHANGE:
wake_time = 0x01;
if(g_max_pressure - g_min_pressure >= 0x05) //10Kpa
{
reset_comprare(pressure);
g_stable_cnt = 0;
send_flag = 1;
}
else
{
g_stable_cnt ++;
if(g_stable_cnt >= 0x05)
{
g_status = STATUS_STABLE;
g_stable_cnt = 0;
}
}
break;
case STATUS_ROLL:
wake_time = 0x06;
if(g_max_pressure - g_min_pressure >= 0x05)
{
reset_comprare(pressure);
g_status = 0x04;
g_tx_cnt = 0;
g_stable_cnt = 0;
send_flag = 1;
wake_time = 0x01;
}
g_tx_cnt++;
if(g_tx_cnt > 0x09)
{
g_tx_cnt = 0;
if(acceleration_convert() < 0x2F)
{
g_stable_cnt++;
if(g_stable_cnt > 0x04)
{
g_status = STATUS_STABLE;
}
}
send_flag = 1;
}
break;
case STATUS_ROLL_LEAK:
wake_time = 0x01;
if(g_max_pressure - g_min_pressure >= 0x05)
{
reset_comprare(pressure);
g_stable_cnt = 0;
send_flag = 1;
}
else
{
g_tx_cnt++;
if(g_tx_cnt >= 0x05)
{
g_tx_cnt = 0;
g_stable_cnt++;
if(g_stable_cnt > 0x02)
{
g_status = STATUS_ROLL;
g_tx_cnt = 0;
g_stable_cnt = 0;
}
send_flag = 1;
}
}
break;
default:
break;
}
已实际应用于生产,完整方案文档正在整理持续更新。
对于此项目有兴趣可以邮件联系,可以提供调试源码寄整套方案探讨
技术沟通邮件:[email protected]