- 博客(26)
- 资源 (6)
- 收藏
- 关注
原创 UDS之27服务
请求Seed的子功能发送的参数一定是奇数,而应答发送Seed的子功能参数则是这个奇数+1。(4)Server也根据相同算法算出一个钥匙(Key)与Client发送过来的Key进行对比,一致则解锁。(3)Client再根据相应算法算出一个匹配这个种子(Seed)的钥匙(Key)并发送给Server;这个服务的目的是为那些限制访问,以及和排放、安全相关的一些服务和数据提供一些访问权限来保护数据。(1)Client请求一个种子(Seed);(2)Server发送种子(Seed);
2023-07-25 22:48:39
583
1
原创 UDS之11服务
控制MCU进行重启,重启分为硬重启和软重启,11服务一般代表软重启,虽然它里面有个子服务是硬件重启,这里需要注意下;硬重启在日常工作中一般代表B+重启。
2023-07-25 22:32:22
440
原创 UDS之10服务
APP 中只有 01.默认会话和扩展会话。当诊断仪发送 02 10 02时回复78等待。重启控制器进入BOOT模式。10服务是UDS中的会话切换。由于之前做的BOOTLOADER比较多,现在算是重点放到了UDS诊断这一块。BOOT中 10服务分为 1.默认会话;笔者最近接触一个UDS的项目,现针对UDS中遇到的问题进行总结。
2023-07-13 21:26:21
1245
原创 基于AUTOSAR的网络管理模块
网络管理模块位于AutoSar 的通信服务(Communication Service)模块之中,其主要功能是负责通信管理,防止节点因为自身的故障而浪费通信资源,第二个功能是节点的状态监测,保证每个节点最基本的管理帧的发送,使每个节点能够被其他节点所发现。基于CAN总线的网络管理模块示意图:图1-1 网络管理组件示意图网络管理主要包含以下模块:ComM 2.NmIf 3. CanNm 4.CanSm各个模块的功能如下表所示:表1‑1网络管理模块组成 ...
2022-02-12 17:22:15
832
1
原创 参考页和工作页能够正常工作的函数
// 指定在参考页Ccp_ControlStatus.page = CCP_PAGE_RP;Ccp_ControlStatus.TxFailedLastOneFlag = FALSE;Ccp_ControlStatus.TxFailedContinueFlag = FALSE;/* copy data from reference page to working page // 将数据从参考页复制到工作页*///Mem_Copy(CCP_WORKING_PAGE_ADDR,CCP_REFEREN
2021-05-22 10:06:34
970
6
原创 基于UDS的BOOTLOADER(TC275)(2)
上一篇文章记录了如何分区,但在 工程中如何给 代码分区呢?如何设置起始地址呢?针对这一问题,本文会做详细的解读:笔者使用的是Hightec编译器。大家在拿到 TC275 例程的时候都会拿到一个 Lcf_Gnuc.lsl 文件,这个文件主要描述的就是如何在Hightec中分配地址。LCF_INTVEC0_START = 0x80010000;/此处是APP的地址/LCF_TRAPVEC0_START = 0x80000100;RESET = 0x80000020; /* BootLoader
2021-05-22 10:03:47
2226
1
原创 基于UDS的BOOTLOADER(TC275)(1)
对 bootloder 来讲,有以下几点需要注意:程序的分区;跳转指令;分区的链接文件;flash擦除及烧写函数;协议栈(UDS);那么针对咱们这个程序该如何写呢?首先,你要弄清楚如何分区。PLASH分区 : BootLoader: 0xA0000000 — 0xA0010000APP:: 0xA0010000 — 0xA001FFFF...
2021-05-20 21:59:24
2832
1
原创 基于TC275的电机控制器
近期在做一个电机控制器,主芯片采用 TC275 + 旋变软解码。之前也写过与275相关的文章。借着这个项目的机会,在这里做一个详细的讲解。包括以下几个方面:BOOTLOADER(基于UDS协议)FlashDriver烧写上位机UDS诊断XCP标定FOC旋变软解码MTPAMTPV如果大家觉得有兴趣,请关注我,谢谢!...
2021-05-20 18:50:22
1840
1
原创 PID整定调解
1 电流内环调节器设计矢量控制系统的电流环是对 iq进行控制,控制的是定子电流,进而控制电机转矩。电流内环的作用是在电机启动过程中能够以最大电流启动,同时在外部扰动是能够快速恢复,加快动态跟踪响应速度,提高系统的稳定性。上图为电流内环的流程图,电流内环的输入为电流信号的误差值,输出为参考电压,控制电动机转矩。第一个环节是PI调节器,第二个环节是延迟环节,第三个环节是PWM环节。其中电机传递函数可通过近似处理为:在开关频率为10KHZ时,由于开关频率较高,就可以把延迟环节和PWM环节合并处理,记
2021-03-24 22:10:01
991
原创 PID计算程序
界面:Rs:定子电阻 J:转动惯量Lq:Q轴电感 B:磁场强度Ld:D轴电感 P:4Pisa:磁链强度 Ts: 采样时间Kp_ACR:电流调节器P Kp_ASR:转速调节器PKi_ACR:电流调节器I Ki_ASR: 转速调节器I使用示范:计算出来参数后,带入到仿真模型中,初次仿真看性能如何。按照pi调节器的性能,微调即可出波形。...
2021-03-24 22:02:54
1826
原创 如何使用EB软件 --- 导入已有工程
选择File→Import打开Import对话框。. 在Import对话框中选择Existing Projects into Workspace并单击Next会弹出导入工程的对话框。3. 在导入工程的对话框的Select root directory 填写工程所在路径并按回车键(也可以通过Browse选择工程所在路径),之后单击Finish即可导入已有工程。...
2021-03-24 17:26:27
2803
原创 STM8 BOOTLODER 之 双中断设定
A、 Bootloader ICF 请查看 stm8af52a6_Boot.ICF 在项目文件夹的ICF文件夹中; define region VectData = [from 0x1000 to 0x107F];//重定向的中断向量表的存放位置 //为真实的中断向量标在RAM中申请一个空间; place at start of VectData { rw section .vector }; //定义中断向量表的存放位置。 do not initialize
2021-01-23 16:08:31
283
2
原创 基于UDS协议的TC275 BOOTLODER程序之 flashdriver
UDS 烧写 要求先烧写 flashdriver 再烧写APP.BOO程序里不包含flashdriver。故需要将flashdriver烧写到ram中。 flashdriver程序和boot程序的ld文件不同,flashdriver需要在ld文件中指定ram地址。这样生成的代码的地址就固定在ram里。 通过34服务将地址告诉下位机。下位机通过指针调用烧写函数。...
2021-01-14 21:54:57
4454
原创 将CCP协议移植到TC275(2)
接上篇文档。4) Compiler_Cfg.h此文件主要是编译器配置文件。/******************************************************************************** CAN Driver START *******************************************************************************/#define CAN_PUBLIC_CODE
2020-12-09 21:08:31
1171
原创 将CCP协议移植到TC275中(1)
如上图所示,这是CCP的协议栈,包含头文件及源代码。include里边包含所有与CCP相关的头文件。1.Ccp_CAN_Driver.h此文件主要包括和can驱动相关的宏定义,枚举,结构体及调用函数。void MultiCAN_CCP_Init(void);void MultiCAN_Messgage_send_CAN(uint8 data[],IfxMultican_Can_MsgObj canSrcMsgObj,uint32 id);void MultiCAN_Messgage_read_.
2020-12-08 20:46:08
1762
原创 旋转编码器软解码
英飞凌AURIX系列支持RDC软解码。如上图所示,主要使用PWMP和PWMN两路信号软件方式产生一对正弦激励信号(10K),旋变产生的SIN和COS信号返回给DSADC通道做软解码使用。软解码初始化函数void DSADC_RDC_Init(void){ DSADC_ModuleInit(); DSADC_RDC_ChannelInit(); DSADC_GLOBRC.U = 0x30003;//restart CH0 conversion}初始化模块void DSADC_Modul.
2020-11-04 20:51:57
7841
6
原创 A2L的生成过程
1、在电脑‘开始’中找到 ASAP2 editor打开,选择 Tools打开 Settings database/MAP file,如下图2.按红色指示进行,选择MAP文件3、点击 OK4、选择需要标定的参数或者需要观测的变量
2020-09-05 10:08:21
2843
原创 STM32识别车牌
系统概要本系统以STM32F103RBT6单片机为主控,控制OV7670摄像头(带FIFO)进行图像采集,通过模式识别、匹配,最后获得车牌的识别结果。为尽大可能的提高处理速度,STM32单片机进行了16倍频。识别主要过程包括图像采集、二值化分析、识别车牌区域、字符分割、字符匹配五过程。系统框图系统框图识别原理 图像采集图像通过OV7670摄像头进行数据采集,采集的图像大小为320*240像素,像素格式为RGB565。每个像素由两字节组成,第一字节的高五位是R,第一字节...
2020-09-02 23:04:55
3418
原创 Bootloder开发方案(基于UDS)
Bootloader是所有支持重编程的ECU必须具备的软件功能,在ECU运行过程中,执行的是应用软件和应用数据,仅当应用软件或应用数据无效时,或者要求对其进行升级或特殊测试的时候,Bootloader软件才被激活。应用软件和应用数据可以同时编程或者相互独立编程,不允许重新编程时更新Botloader软件。Bootloader软件存储于被保护的存储器区域,即使发生潜在错误时,控制器始终保证可重新编程。2.1.1安全机制为确保下载的安全,ECU需设计安全机制...
2020-09-02 22:44:38
3648
原创 XCP的移植(2)
本篇文章主要介绍CAN driver和xcp的交互。1.首先是对XCP使用ID进行初始化(在main函数)XCPCANInit(0x200,0x300,0x301,0x302,0x303);函数原型如下:void XCPCANInit (uint16 cro_id, uint16 dto_id, uint16 daq0_id, uint16 daq1_id,
2020-09-02 22:28:49
4372
3
原创 A2L头文件解析(基于CCP协议)
1.标定量如何分区(注意:标定量的地址在flash上,所以在初始化阶段应该讲flash搬到ram中去)/begin MEMORY_SEGMENT _RAM“calibration_ram”DATARAMINTERN0x40004C00 // 标定量对应在RAM的区域(需将FLASH的标定量复制到这个区)0x00002000 // 标定量的大小-1 -1 -1 -1 -1/end MEMORY_SEGMENT/begin MEMORY_SEGMENT _ROM“calib
2020-09-02 19:59:35
7934
10
原创 STM32F103 基于UDS的BOOTLOADER
1.对于BOOTLODER来讲,首先要讲FLASH分好区BOOTLODERAPP2.跳转函数Boot_JumpToApplication(0x08008000);具体内容如下:void Boot_JumpToApplication(uint32_t Addr){static pFunction Jump_To_Application;__IO uint32_t JumpAddress;/* Test if user code is programmed starting from a
2020-07-17 19:48:11
1816
1
原创 基于MPC5634L的BOOTLOADER(UDS)(一)
基于MPC5634L的BOOTLOADER(UDS)(一)博主最近参与一个BOOTLAODER的项目(MPC5634),需要用到DCM模块(基于UDS)的烧写流程。由于采用Autosar架构,将配置函数和执行函数分开;本文主要说一下DCM的配置。1 DCM_CfgDCM协议的配置const Dcm_ServiceTableType Dcm_ServiceTable[DCM_SERVIC...
2020-04-18 20:54:39
1305
1
原创 基于UDS的BOOTLOADER的CANOE脚本
riables{ /*Panel*/ char bootloaderWnd[100] = "BootLoader"; /* Messages */ message PEPS_Phys_Diag_Rx msgBootHost; message PEPS_Diag_Tx msgBootClient; /* Timers *...
2020-03-15 22:10:09
3141
5
原创 XCP的移植(1)
main.c的移植1.初始化CAN;函数 :void XCPCANInit (uint16 cro_id, uint16 dto_id, uint16 daq0_id, uint16 daq1_id,uint16 daq2_id);2.Xcp初始化;.函数:Xcp_Initialize();3.上电先把标定数据从flash写到ram中;4.在主循环中调用xcp函数 ( XCP_Han...
2020-03-15 22:01:21
3448
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人