概述
某客户的新项目使用APM32F072RBT7应用在车灯领域,使用到的多通道LED Drive IC(型号因涉及到NDA,暂时不方便透露)需要特定的时序要求,因客户对072不太熟并且要求的时序较复杂,所以协助客户实现072驱动LED Drive,实现LED的基本控制。
时序要求如下:
1、072的串口1产生波特率500Kbps、1位停止位、偶校验
2、数据发送前需要26us的持续低电平(25-27us,经典值26us)
需求分析
1、第一个需求比较简单,按普通串口配置即可,需要注意的是,使用了奇偶校验后,数据长度的配置需要改成USART_WORD_LEN_9B;
2、第二个需要是最关键也是客户解决不了的,26us的低电平结合波特率500Kbps联想,刚好是LIN的break长度(13bit);
现在需求基本明了,可以按照需求进行简单的配置。
实现步骤
步骤实现分两大方面,第一个是串口通信的配置实现,第二个是26us持续低电平的实现。
1、串口通信配置比较简单,按照需求配置即可,如下图所示。
2、26us持续低电平开启LIN模式和发送数据前置位“请求发送断开帧(Transmit Break Frame Request)”
3、示波器抓波形发现 break长度竟然是27.2us,客户测试会出现概率性发送命令失败的情况。经过分析发现是一开始配置成串口的参数里有数据长度是9B,导致break长度也多了1个bit。
4、把串口参数配置usartConfigStruct.wordLength = USART_WORD_LEN_8B,开始段break持续时间满足LED IC,这里就需要进行不同的配置,才能满足break段和串口发送数据帧。主要区别是发送break段需要usartConfigStruct.wordLength = USART_WORD_LEN_8B,发送数据帧需要usartConfigStruct.wordLength = USART_WORD_LEN_9B。
5、通过更改不同串口参数的方式,终于模拟出LED 驱动IC的时序,但又有个问题就是配置时间比较耗时,约72us,客户评估一旦数据多的时候,会影响到灯效。
6、最后通过直接修改寄存器的方式,把时间减少至25us,满足客户的需求。
总结
随着新能源车的技术发展,车灯也从传统的亮灭方式逐渐普及到贯穿式的流水式灯,需要的LED驱动IC通道数量和数量也越来越多;同时对通信的时序要求也越来越复杂,这样才能满足一根总线挂多颗LED驱动并且通信数据的可靠性。
|