- 博客(46)
- 资源 (8)
- 收藏
- 关注
原创 汽车UDS诊断教程 ISO15765(十)
地址结构概述目标地址及源地址都编码在 29 位 CAN 标识符中,并且每个长度为 11 位。地址的定义一个地址包含两个部分a)网络地址网络地址部分包含第一个连续的位“X”地址并且决定了一个节点所在的网络。同一物理总线上的节点应当分配同一个网络地址。网络地址部分不应当将所有的位置为 1.因 此,最小的网络地址长度应为 2 个位。最大长度应为 9 个位因为因为至少需要 2 个...
2020-01-08 19:52:24
3912
原创 汽车UDS诊断教程 ISO15765(九)
网络层接口网络层接口概述主要介绍了ISO 15765 协议使用 ISO 15765-2 定义的网络层服务进行诊断信息的收发。定义了应用层协议数据单元(A_PDU)到网络层协议数据单元(N_PDU)的映射。其中需要注意:网络层的服务用语应用层及诊断会话管理的定时。流控N_PCI参数定义客户机 Stmin 参数不应该使用0xF1-0xF9 的值。这些 Stmin 参数值应汽车...
2020-01-06 20:31:52
3818
原创 汽车UDS诊断教程 ISO15765(八)
ISO15765-3是什么?包含哪些内容?具体的定时参数描述默认会话下物理通信下图描述了客户机和服务器在默认会话下物理地址请求信息定时的操作。a)客户端诊断应用层通过发送N_USData.req到网络层开始发送请求信息。网络层传递该请求信息至服务器。该请求信息要么以单诊的形式或多帧的形式。b)在多帧信息情况下,请求开始于网络层发送的N_USDat...
2019-12-29 21:09:29
3051
1
原创 汽车UDS诊断教程 ISO15765(七)
接上一节,ISO15765-3是什么?包含哪些内容?ISO15765-3主要范围ISO 15765-3 协议是按照 ISO 14229-1,描述了在ISO11898 定义的控制器局域网中统一诊断服务(UDS)的实施。它给所有汽车连接至CAN网络服务器及外部测试设备提供诊断服务及服务器存储器编程的需求。术语、缩写DA目标地址ID标识符DLC数据长度码G...
2019-12-28 20:18:36
5614
原创 汽车UDS诊断教程 ISO15765(六)
ISO15765-2是什么?包含哪些内容?接上一节了解具体数据链路层的使用数据链路层接口服务L_Data.request该请求服务需要通过<Idetifier>标识,将<Data>数据映射到指定的数据链路层单元。<Idetifier>标识需提供参照指定的访问格式发送<Data>数据:L_Da...
2019-12-23 21:08:37
4249
1
原创 汽车UDS诊断教程 ISO15765(五)
ISO15765-2是什么?包含哪些内容?接上一节了解具体网络层定时网络层定时定时参数运行要求的数值是是对对等通信的约束,以符合该协议。某个应用应指明规定的运行需求,该范围在下表中定义。定义超时的值应比运行要求的值大保证系统工作且使克服运行需求值在(高总线负载)时,绝对不会满足。指定的超时的值认为是执行的最低限。实际超时的发生不应长于指定超时值+50%。网络层...
2019-12-22 19:37:26
3309
原创 汽车UDS诊断教程 ISO15765(四)
接上一节具体描述ISO15765-2网络层协议协议功能网络层协议协议有如下功能:a)发送/接收最多4095个字节的数据信息b)报告发送/接收完成状态。单帧发送(扩展及混合地址情况下)最多发送6字节或(正常地址情况下)7字节数据,按照N_PDU格式发送信息,称为单帧(SF)。最多6或7字节的接收通过N_PDU制式。...
2019-12-21 21:20:39
8304
原创 汽车UDS诊断教程 ISO15765(三)
ISO15765-2是什么?包含哪些内容? 接上一节网络层服务项所有的网络层服务项有统一的结构。为了定义这些服务项,三类主要的服务项说明如下:请求服务,被更高的通信层或应用层使用,用于向网络层传递控制信息及要发送的数据; 指示服务,被网络层使用,用于向更高通信层或应用层传递状态信息及接收到的数据; 确认服务,被网络层使用,用于向更高通信层或应用层传递状态信息。这些服务说...
2019-12-19 22:13:52
4695
原创 汽车UDS诊断教程 ISO15765(二)
ISO15765-2是什么?包含哪些内容?ISO15765-2的协议,定义车载诊断系统网络层要求,提供在CAN数据链路层(ISO11898定义)上运行。虽说它最初设计是用在诊断系统上的,它同样适用于其它需要网络层协议的CAN通信系统上。为了达到诊断通信要求,ISO15765协议是基于ISO/IEC 7498和ISO/IEC 10731的开放互联系统基本参考模型建立的。该模型将通信系统分为七...
2019-12-18 20:52:03
5947
2
原创 汽车UDS诊断教程 ISO15765(一)
ISO15765是什么?包含哪些内容ISO(国际标准化组织)是一个世界范围内的国家标准机构(国际标准化组织)。(具体可以自行百度了解下)IS015765由技术委员会IS0/TC22下属的道路车辆第3小组编写的电气和电子设备标准。IS015765道路车辆一控制局域网络诊断(CAN)IS015765由以下几部分组成:1部分:一般信息 2部分:网络层服务 3部分:统一诊断服务( ...
2019-12-15 14:15:09
8762
转载 uCOS-II 基础入门教程(十二)
内存管理在ANSI C中可以用malloc()和free()两个函数动态地分配内存和释放内存。但是,在嵌入式实时操作系统中,多次这样做会把原来很大的一块连续内存区域,逐渐地分割成许多非常小而且彼此又不相邻的内存区域,也就是内存碎片。由于这些碎片的大量存在,使得程序到后来连非常小的内存也分配不到。由于内存管理算法的原因,malloc()和free()函数执行时间是不确定的。在µC/OS-I...
2019-01-23 22:03:29
940
转载 uCOS-II 基础入门教程(十一)
任务之间的通讯与同步在µC/OS-II中,有多种方法可以保护任务之间的共享数据和提供任务之间的通讯。在前面的章节中,已经讲到了其中的两种:一是利用宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()来关闭中断和打开中断。当两个任务或者一个任务和一个中断服务子程序共享某些数据时。二是利用函数OSSchedLock()和OSSchekUnlock()对µC/OS...
2019-01-22 23:10:11
870
转载 uCOS-II 基础入门教程(十)
任务堆栈 每个任务都有自己的堆栈空间。堆栈必须声明为OS_STK类型,并且由连续的内存空间组成。用户可以静态分配堆栈空间(在编译的时候分配)也可以动态地分配堆栈空间(在运行的时候分配)。静态堆栈声明如程序,这两种声明应放置在函数的外面。 静态堆栈static OS_STK MyTaskStack[stack_size]; 用户可以用C编译器提供的malloc()...
2019-01-21 21:29:43
774
转载 uCOS-II 基础入门教程(九)
建立任务,OSTaskCreate()想让µC/OS-Ⅱ管理用户的任务,用户必须要先建立任务。用户可以通过传递任务地址和其它参数到以下两个函数之一来建立任务:OSTaskCreate() 或 OSTaskCreateExt()。OSTaskCreate()与µC/OS是向下兼容的,OSTaskCreateExt()是OSTaskCreate()的扩展版本,提供了一些附加的功能。用两...
2019-01-20 20:47:58
1206
转载 uCOS-II 基础入门教程(八)
μC/OS-Ⅱ初始化在调用μC/OS-Ⅱ的任何其它服务之前,μC/OS-Ⅱ要求用户首先调用系统初始化函数OSIint()。OSIint()初始化μC/OS-Ⅱ所有的变量和数据结构(。OSInit()建立空闲任务idle task,这个任务总是处于就绪态的。空闲任务OSTaskIdle()的优先级总是设成最低,即OS_LOWEST_PRIO。如果统计任务允许OS_TASK_STAT_E...
2019-01-16 22:41:41
897
转载 uCOS-II 基础入门教程(七)
任务调度(Task Scheduling)μC/OS-Ⅱ总是运行进入就绪态任务中优先级最高的那一个。确定哪个任务优先级最高,下面该哪个任务运行了的工作是由调度器(Scheduler)完成的。任务级的调度是由函数OSSched()完成的。中断级的调度是由另一个函数OSIntExt()完成的,这个函数将在以后描述。OSSched()的代码如程序: void OSSched (vo...
2019-01-15 21:38:58
1146
转载 uCOS-II 基础入门教程(六)
中断中断是一种硬件机制,用于通知CPU有个异步事件发生了。中断一旦被识别,CPU保存部分(或全部)现场(Context)即部分或全部寄存器的值,跳转到专门的子程序,称为中断服务子程序(ISR)。中断服务子程序做事件处理,处理完成后,程序回到:在前后台系统中,程序回到后台程序 对不可剥夺型内核而言,程序回到被中断了的任务 对可剥夺型内核而言,让进入就绪态的优先级最高的任务开始运行...
2019-01-14 21:10:07
1068
1
原创 uCOS-II 基础入门教程(五)
死锁(或抱死)(Deadlock (or Deadly Embrace))死锁也称作抱死,指两个任务无限期地互相等待对方控制着的资源。设任务T1正独享资源R1,任务T2在独享资源T2,而此时T1又要独享R2,T2也要独享R1,于是哪个任务都没法继续执行了,发生了死锁。最简单的防止发生死锁的方法是让每个任务都:先得到全部需要的资源再做下一步的工作 用同样的顺序去申请多个资源 释放资源时使...
2019-01-08 22:21:10
1269
原创 uCOS-II 基础入门教程(四)
互斥条件 实现任务间通讯最简便到办法是使用共享数据结构。。虽然共享数据区法简化了任务间的信息交换,但是必须保证每个任务在处理共享数据时的排它性,以避免竞争和数据的破坏。与共享资源打交道时,使之满足互斥条件最一般的方法有:关中断 使用测试并置位指令 禁止做任务切换 利用信号量 关中断和开中断 处理共享数据时保证互斥,最简便快捷的办法是关中断和...
2019-01-07 20:38:50
1865
1
原创 uCOS-II 基础入门教程(三)
任务优先级每个任务都有其优先级。任务越重要,赋予的优先级应越高。静态优先级应用程序执行过程中诸任务优先级不变,则称之为静态优先级。 动态优先级应用程序执行过程中,任务的优先级是可变的,则称之为动态优先级。实时内核应当避免出现优先级反转问题。 优先级反转如图,任务1优先级高于任务2,任务2优先级高于任务3。任务1和任务2处于挂起状态,等待某一事件的发生,任务3正在运行如。...
2019-01-03 20:47:46
4506
原创 uCOS-II 基础入门教程(二)
内核(Kernel)多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU时间,并且负责任务之间的通讯。内核提供的基本服务是任务切换。之所以使用实时内核可以大大简化应用系统的设计,是因为实时内核允许将应用分成若干个任务,由实时内核来管理它们。内核本身也增加了应用程序的额外负荷,代码空间增加ROM的用量,内核本身的数据结构增加了RAM的用量。但更主要的是,每个任务要有自己的栈空间,这一块...
2019-01-02 21:44:16
3648
原创 uCOS-II 基础入门教程(一)
最近一起分享下uCOS-II学习教程,包括uCOS-II一些专有名词,任务,优先级等。Start:uCOS-II概念μC/OS-II由Micrium公司提供,是一个可移植、可固化的、可裁剪的、占先式多任务实时内核,它适用于多种微处理器,微控制器和数字处理芯片(已经移植到超过100种以上的微处理器应用中)实时系统概念实时系统的特点是,如果逻辑和时序出现偏差将会引起严重后果的系统。...
2019-01-01 17:08:33
14484
5
转载 数据结构---抽象数据类型(二)
抽象数据类型(Abstract Data Type,ADT)是指一个数学模型以及定义在这个模型上的一组操作。抽象数据类型的定义仅仅取决于它的一组逻辑特性,而与它在计算机中的表示和实现无关。抽象数据类型有两个重要特征:数据抽象和数据封装抽象数据类型在定义时遵循一定的格式规范:ADT 抽象数据类型名{Data: 数据元素之间逻辑关系的定义;Operation:...
2018-11-04 21:26:15
1862
原创 数据结构 入门
什么是数据结构?数据结构是计算机存储、组织数据的方式,它是指相互之间存在一种或多种特定关系的数据元素的集合。数据结构的分类1、逻辑结构集合 数据元素都属于这个集合,但数据元素之间并没有什么关系。线性结构 元素具有一对一的关系。线性结构分为顺序存储和链式存储两种。顺序存储是由一段地址连续的空间来存储元素;链式存储是由分散的单元空间来存储元素,存储单元由指针相连接。...
2018-10-29 21:01:26
418
原创 数据结构——双向链表
什么是双向链表单链表有一个缺点,无法快速访问前驱结点,当查找到某一个元素时,如果想查找其前驱结点,需要再次从头遍历。因此,有人提出在结点中再添加一个指向前驱的指针,如此便构成了双向链表。 ...
2018-10-17 21:18:21
312
原创 Simulink入门(三)
1.曲面图的绘制 •曲面图的绘制由surf指令完成,该指令的调用格式与mesh指令类似,具体如下:•(1)surf (X,Y,Z)•(2)surf (Z)•(3)surf (X,Y,Z,C)•(4)surf(X,Y,Z,’PropertyName’,PropertyValue,…)•与mesh指令不同的是,mesh指令所绘制的图形是网格划分的曲面图,而surf指令绘制得...
2018-08-02 20:05:08
8335
原创 CAN总线入门学习(二)
关注“嵌入式软件学习圈”免费获取更多学习教程6. CAN 协议的基本概念CAN 协议如表 3 所示涵盖了 ISO 规定的 OSI*1 基本参照模型中的传输层、数据链路层及物理层。CAN 协议中关于 ISO/OSI 基本参照模型中的传输层、数据链路层及物理层,具体有哪些定义如图 5 所示。 数据链路层分为 MAC 子层和 LLC 子层,MAC 子层是 CAN 协议的核...
2018-07-24 20:50:45
2470
原创 Simulink入门(二)
关注“嵌入式软件学习圈”免费获取更多学习教程一、数值的输出格式•(1)数值型数据•MATLAB数值型数据包括整数(有符号和无符号)和浮点数(单精度和双精度),表1-6列出了数值型的不同格式。需要注意的是,在缺省状态下,数据类型默认为双精度的浮点数。(2)MATLAB的数值精度•MATLAB所能表示的最小实数称为MATLAB的数值精度,在MATLAB 7以上版...
2018-07-24 20:45:10
9066
原创 CAN总线入门学习(一)
今天带着大家学习,CAN总线 。。。。1. 概要本资料是面向 CAN 总线初学者的 CAN 入门。对 CAN 是什么、CAN 的特征、标准规格下的位置分布等、CAN 的概要及 CAN 的协议进行了说明。2. 使用注意事项本资料对博世(BOSCH)公司所提出的 CAN 概要及协议进行了归纳,可作为实际应用中的参考资料。对于具有 CAN 功能的产品不承担任何责任。3. CAN 是什么?CAN 是 Co...
2018-07-11 22:08:31
19946
原创 Simulink入门(一)
一、MATLAB基本知识 MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,MATLAB解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,从而使MATLAB成为一个强大的数学软件。因此,本书从最基本的运算单元出发,讲述了MATLAB矩阵的表示方法,符号变量的应用,线性方程组的求解,并着重...
2018-07-11 22:06:10
32893
3
原创 嵌入式软件工程师必须了解的八大加密算法
关注“嵌入式软件开发学习圈”免费获取更多学习教程今天带着大家学习下,高级点的嵌入式算法(常用数据加密算法),今天主要和大家学习下常用加密算法。本文先介绍常用加密算法、其意义、并且其嵌入式代码实现的C语言代码。。。数据时代,嵌入式工程师必须知道的八大加密算法伴随着人工智能、物联网时代的到来,数据应用变得频繁起来,数据安全应该如何保护?软件加密算法都有哪些,这些算法在哪些方面得到了应用?慢慢读下去,你...
2018-05-06 14:55:22
6138
原创 DSPIC33EV DSPIC33EP系列CAN驱动
今天带着大家学习DSPIC33EV、DSPIC33EP系列CAN驱动模块的配置。下面直接上代码一起结合数据手册一起学习下,首先我们先来看下DSPIC33EV、DSPIC33EP系列CAN框图ECAN模块包括:DMA(Direct Memory Access,直接内存存取),CAN协议引擎,过滤器、屏蔽寄存器等,如上图所示,CAN总线上收到数据之后保存至DMA RX接收缓冲区控制寄存器 ,同...
2018-05-05 22:40:07
5306
原创 飞思卡尔MC9S12XS TIME输入捕获
今天带着大家学习飞思卡尔MC9S12X TIME模块中的输入捕获,TIME模块之前介绍过了在这里就不重复了。首先先大家介绍下什么是输入捕获【输入捕捉】 输入捕捉(InputCapture,IC):通过捕获自由运行计数器的计数值来检测外部事件和记录选定的输入信号跳变边沿的时间。 当外部事件发生或信号发生变化时,指定的输入捕捉通道对应的引脚上产生一个规定的跳变沿(上升沿或下降沿)...
2018-04-30 14:30:45
2557
1
转载 分享大学期间做智能车的一些资料,包括超声波测距模块、直流电机控制算法、MPU6050等等
主要和大家分享智能车开发学习的一些资料,分享给有需要的小伙伴们,需要其他嵌入式学习资料的小伙伴们可以关注下我头像,不定期分享最新嵌入式学习资讯资料、分享嵌入式开发经验、分享嵌入式学习流程。包括PID控制算法、滑模控制、卡尔曼滤波、模糊控制等,如下图示 为智能车或者学习MPU6050模块(九轴加速度传感器 陀螺仪)的小伙伴们提供一些源码 为大家提供超声波测距模块的一些资料和源码 提供大家直流电机控制...
2018-04-30 14:08:24
1763
转载 C语言 七大查找算法学习
【点击上方蓝字关注「嵌入式软件开发学习圈」每晚推送】今天带着大家学习七大查找算法,剩下的四大算法。斐波那契查找、树表查找、查找树、红黑树。 ①斐波那契查找在介绍斐波那契查找算法之前,我们先介绍一下很它紧密相连并且大家都熟知的一个概念——黄金分割。黄金比例又称黄金分割,是指事物各部分间一定的数学比例关系,即将整体...
2018-04-29 12:23:07
2293
转载 非常值得一看—九种滤波算法C语言实现
关注“嵌入式软件开发学习圈”免费获取更多学习教程今天带着大家学习滤波算法c语言(九种滤波算法)实现,以及代码,大家可以学习了解下。。。。1.限幅滤波算法(程序判断滤波算法)方法解析:根据经验判断,确定两次采样允许的最大偏差值(设定为A),每次检测到新值时判断:如果本次值与上次值之差<=A,则本次值有效,如果本次值与上次值只差>A,则本次值无效,放弃本次值,用上次值代替本次值。优点:能有...
2018-04-29 12:18:46
20182
5
原创 飞思卡尔MC9S12X Time输出比较
今天带着大家看下飞思卡尔MC9S12 Time模块的输出比较。具体代码如下/*************************************************************//* 初始化锁相环 *//* 使用外部晶振:16MHz ...
2018-04-25 12:52:09
1111
原创 飞思卡尔MC9S12X PIT模块
今天带着大家学习了解下飞思卡尔MC9S12XS PID模块。PIT模块概述周期性中断定时器(Periodic Interrupt Timer,PIT)模块是一组24位的定时器,由8位微定时器和16位定时器共同组成,该模块一般用来触发外围模块或者唤醒周期性中断。PIT是一个模数递减计数器,首先给计数寄存器设定一个初值,每经过一个总线时钟,8位微定时计数器做1次减1操作,当8位微定时计数器自减为0时,...
2018-04-24 20:25:59
3000
原创 飞思卡尔MC9S12X SCI驱动
今天带着大家学习飞思卡尔MC9S12X SCI驱动。什么是SCI串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,特别适合远距离通信。其缺点是传输速度较低.什么是波特率每秒内能发送或接收的二进制位数称为波特率。若发送一位时间为t,则波特率为1/t。MC9S12XS128 SCI模块MC9S12XS128内置的SCI模块是全双工、波特率可编程设置、可编程...
2018-04-24 15:43:35
2623
1
原创 飞思卡尔MC9S12X PWM驱动
今天带着大家学习飞思卡尔MC9S12X PWM驱动首先什么是PWM及应用脉冲宽度调制(PWM)是产生精确脉冲序列输出和实现D/A转换的有效方法,微控制器的脉宽调制模块被广泛应用于工业控制和新型消费机电产品中(如智能空调、节能冰箱、电动自行车等)。PWM信号通过软件编程调节波形的占空比、周期和相位,能够用于直流电动机调速、伺服电动机控制、D/A转换器等应用。MC9S12X的PWM模块概述MC9S12...
2018-04-23 19:50:02
5018
Autosar J1939Dcm模块总结.docx
2020-02-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人