PWM数字信号采集板卡设计方案 1、结构框图
2、公共部分方案详解 主控制器采用STM32F103RCT6,外置8MHz晶振,有复位电路但不设置复位按键,外界JTAG调试接口(10P),支持J-link-ST-link,具体可参考板卡原理图。 系统使用5V供电,板载LDO稳压至3.3V,为控制器等供电,同时引入功率24V电(P24)与系统24V电源(S24),为负载或测试ECU提供电压基准。 板载3.3V电源指示灯,默认为红色,同时提供两个绿色LED,用作系统运行状态指示,具体链接可参考板卡原理图。 板卡再带两路拨码开关,用来调节CAN通信的基础地址,具体设置方式可参考板卡使用说明。 所有板卡及上位机之间使用CAN接口通信,遵循J1939通信协议,STM32外接TJA1051T/3收发器,与上位机进行CAN通信,各板卡与上位机地址独立。 3、各板卡子功能详解 本板卡负载采集八路PWM信号与六路数字信号, 八路PWM信号要求包含频率、占空比,数字信号只获取高低电平即可。 PWM信号采集电路自带钳位保护,并使用施密特触发器SN74LVC2G17DBVR进行信号整形,数字信号使用ULN2003进行隔离,支持5V或24V输入,同时也使用施密特触发器进行信号整形。 数字信号采集部分直接使用GPIO的信号输入功能,由上位机发送指令出发信号采集,病用过CAN通信返回采集结果。 PWM信号使用STM32内部定时器TIM2、TIM4共8路输入通道,进行信号捕获,在捕获中断中进行上升沿与下降沿的判断,病以此计算PWM信号的频率与占空比。
程序设计使用官方标准库STM32F10x_StdPeriph_Lib_V3.5.0.zip进行开发。使用Keil4.74进行开发,具体参见版本信息参加下图。 工程共包含以下4个文件夹 App ——存放用户程序,包含CAN通信处理,数据信号处理 Libraries ——STM32F10x标准库文件 RVMDK ——工程文件以及生成的中间文件,固件文件 User ——main文件以及STM32的配置文件、中断文件 APP.c——>Tim2_PWM_Init(void)函数中,可在以下位置设置TIM2的时钟分频,不分频为72MHz,通改变定时器的时钟频率,可设置PWM的最小测量频率。同时设置计数器为全量程向上计数。
stm32f10x_in.c——>TIM2_IRQHandler()中断函数中,如此为一个程序块,进行一个通道的捕获数据处理。每次进入捕获中断时,通过已经记录的定时器计数数据,判断是第一次上升沿、下降沿、还是第二次上升沿,对应的处理分别如下。 第一次上升沿——记录捕获寄存器同步的计数寄存器数据,并设置为下降沿捕获 下降沿 ——记录捕获寄存器同步的计数寄存器数据,并设置为上升沿捕获 第二次上升沿——记录捕获寄存器同步的计数寄存器数据,到此一次PWM捕获结束 然后通过冗余判断,确实是否需要将后两次捕获到的数据进行溢出处理(+65535) 之后计算PWM的频率、占空比,最后将相关变量清空,并下一次PWM捕获。
|