摘要:
前言 基础知识 Code Block struct Node { int data; struct Node* next; }; 创建链表(用表头表示整个链表) //创建链表表头(结点) struct Node* CreatList() { struct Node* HeadNode = (stru 阅读全文
摘要:
基本概念 给一个内存空间分配好地址,然后这个特殊的内存空间叫寄存器 stm32寄存器 在stm32f10x.h头文件中实现寄存器映射 #define __IO volatile /*!< defines 'read / write' permissions */ typedef struct { _ 阅读全文
摘要:
分类 int a; int *a; int **a; int a[10]; int *a[10]; int (*a)[10]; //一个指向有10个整型数数组的指针 int (*a)(int); //一个指向函数的指针,该函数有一个整型参数,并返回一个整型数 int (*a[10])(int); / 阅读全文
摘要:
位时序 SYNC_SEG:同步段,固定为1Tq SEG1:传播段+相位缓冲段1 SEG2:相位缓存段2 推导公式 位寄存器 通过配置位时序寄存器 CAN_BTR 的 TSI[3:0]和TS2[2:0] ,设置SEG1和SEG2的长度,这样就可以确定一个CAN数据位的时间 Tseg1 = Tq*(TS 阅读全文
摘要:
前言 CAN总线是串行、异步、半双工的通信方式。 CAN没有同步时钟,如果各个节点只用事先约定好的波特率进行通信,加上硬件部分的干扰(传输线上的延迟和节点上收发的延迟)或其他影响,会造成数据错误。 CAN使用位同步的方式来保证信号收发同步,CAN控制器通过硬同步、重同步或位填充的方法来调整时序,实现 阅读全文
摘要:
汽车时代 新能源三大件:VCU、BMS、MCU 汽车模块 ICU:仪表控制模块(车身模块) VCU:整车控制器,实现整车控制决策的核心电子控制单元 VCU通过采集油门踏板、挡位、刹车踏板等信号来判断驾驶意图 通过监测车辆状态(车速、温度等)信息,由VCU判断处理后,向动力系统、动力电池系统发送车辆运 阅读全文
摘要:
数据传输 CAN总线传输的是CAN帧。CAN的通信帧分为五种:数据帧,远程帧,错误帧,过载帧和帧间隔 线与机制 在学习CAN数据传输前,先了解一下CAN总线的线与机制。 只要总线空闲,总线上的任何节点都可以发送报文,如果有两个以及两个以上的节点开始传送报文,那么会存在总线访问冲突的可能,CAN使用标 阅读全文
摘要:
前言 报文解析 报文组成 一般报文主要有以下几个参数(比较全的情况下) | 序号 | 通道 | 方向 | 帧格式 | 帧类型 | 数据长度 | 帧ID | 帧数据 | 时间 | | | | | | | | | | | 例 解析报文时主要用到的是帧ID和帧数据 帧ID 接收到的帧ID是十六进制的形式, 阅读全文
摘要:
0. 背景 CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线之一,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网 阅读全文
摘要:
#BufferCmp uint8_t BufferCmp(const uint32_t* pBuffer, uint32_t* pBuffer1, uint16_t BufferLength) { while(BufferLength--) { if(*pBuffer != *pBuffer1) { 阅读全文