通信协议中数据传输的主要内容与辅助泊车过程中需要的提示有关。主要分为:工作状态提示,文字提示,转向盘图形提示,雷达提示。
辅助泊车工作状态分为默认模式、前后雷达模式和辅助泊车模式。
文字提示区主要为:寻找泊车位,向左打满转向盘,向右打满转向盘,请保持转向盘角度低速行驶,速度过快,违规操作切换至工作状态,请挂前进档,请挂倒后档,制动,注意侧距,与车位平行等文字及声音提示。
转向盘提示区主要为左/右打转向盘的动态图案提示。转向盘中间位数字提示,给出辅助泊车移动过程中的关键停车点的移动距离提示。
雷达提示和一般车的雷达报警功能保持一致。
3.2通信软件流程设计
在辅助泊车控制器和DVD的通信过程中,用到了大量的时间,如果直接在主循环中使用相关时间标识来进行通信设计,会影响程序的可观、可读以及程序的执行效率。在本设计中,通信的设计分为两部分:一是数据的赋值过程,在主函数中随着程序运转的状态进行赋值;二是通信本身的执行在中断中进行。
在辅助泊车控制器中使用TPM2的定时器作为时基,时间为100 μs,所有通信都用状态机来执行,其中,通信时钟线的半周期时间0.5 ms直接用定时器的时间来运行。凡是涉及时间的直接在定时器中断中运行即可。
如图5、图6所示,通信的传输过程主要分为3个内容:传输内容的确定也即通信数据赋值和通信长度确定(是否是连续多个命令,几个命令),开启状态机(对状态机进行设置使之进入状态机,设置传输数据及使能状态同步和时间设置),状态机运行。其中传输内容和开启状态机在主循环和函数中进行,而状态机本身则在定时器中断中运行。
3.3通信代码设计
通信的代码设计中采用结构体加状态机的方式,所用结构体如下所示。结构体中的val为通信数据的值,数据传输时用位移动bit-shift方式进行,对于等待时间,是可以调节的,因此新增了一个等待时间,增加程序调整的灵活度。
enum comstate {IDLE,SYN,DATA,WAIT};
//通信的状态,枚举量
typedef struct Com_//结构体
{
word val ;//通信数据
word timecnt ; //通信的时间计数
byte state ;//通信所处状态
byte wait_time ;//等待时间调节
}_Com;
如图5所示为状态机中的主要内容,传输过程就是对数据和时钟线的电平设置过程,所有的内容都在状态机函数中。状态机为一个整体,在100 Ls中断里运行,其代码如下:
if (DVD timecnt>=4) //100 p,s定时器的0.5 ms状态机时基的设定
{
DVD_timecnt=0;
DVD fsm inform();刀通信状态机
}
else DVD timecnt++;
在使用状态机前需要在主函数中进行触发,示
例代码如下:
inform.val=snd buf [ tmp_cnt++ ];//待发送数值
inform.state=SYN ; //设置同步状态,使能状态
机跳转
inform.wait time=DVD_IDLE ;//设定等待时间