核心概念
工作模式 传输时序
硬件
感知芯片-Perception chip SoC称为系统级芯片,也有称片上系统System-on-a-Chip
微控制单元(Microcontroller Unit;MCU)
ECU(Electronic Control Unit)电子控制单元
线控: 线控- drive-by-wire
线控执行主要包括线控制动、转向和油门
ECU(电控单元)
硬件连接关系
硬件设计方案
SPI(Serial Peripheral Interface,串行外设接口)是一种高速、全双工、同步通信总线,
允许嵌入式处理器与各种外围设备以串行方式进行通信、数据交换
连接方案
只有一个maser、一个slave时,将master与slave上名字相同的4对接口两两互联,即可完成了接口的互联
引脚
通信使用3根线完成:(1)地线,(2)发送数据线,(3)接收数据线。
RS-232通信方式允许简单连接三线:Tx、Rx和地线
串口通信最重要的参数是波特率、数据位、停止位和奇偶校验
SPI它只需4条线:
-SCLK (Serial Clock,也叫SCK、CLK) 接口时钟,master输出至slave的通讯时钟。
串行时钟线
- MOSI(Master Output Slave Input,也叫SIMO、MTSR、DI、DIN、SI)自master输出至slave的数据线。
主机输入/从机输出数据线(MISO)
- MISO(Master Input Slave Output,也叫SOMI、MRST、DO、DOUT、SO)自slave输出至master的数据线。
主机输出/从机输人数据线(MOSI)
- SS (Slave select,也叫 NSS、CS、CSB、CSN、EN、STE、SYNC)master对slave的片选信号,自master输出至slave,低有效
低电平有效的从机选择线(NSS)
传输协议
SPI 是串行外设接口(Serial Peripheral Interface)
(RS-232、RS-422与RS-485的标准与应用)
(RS-232、RS-422与RS-485的标准与应用)
USB(Universal Serial Bus)
COM接口就是遵循RS232标准的物理口。
COM口指串口的物理实现,而RS232是一种串口接口标准
GPIO G英文全称为 General-Purpose IO ports,也就是通用IO口
串口按位(bit)发送和接收字节。尽管比特字节(byte)的串行通信慢,
但是串口可以在使用一根线发送数据的同时用另一根线接收数据
基本过程
通信由主设备发起,主设备通过 CS 选择要通信的从设备,
然后通过 SCLK 给从设备提供时钟信号,
主设备的数据通过 MOSI 输出给从设备,
同时主设备通过MISO 接收从设备发送的数据
优缺点
SPI的缺点:没有指定的流控制,没有应答机制确认是否接收到数据
SPI 的优点:可以同时发出和接收串行数据;
SPI控制器的结构
主要波特率发生器、主控逻辑、收发缓冲、控制部分等几大部分组成
SPI调试
SPI 通信的调试有多种方法,可以通过逻辑分析仪、示波器和变量观察法
分层
SPI 物理层-硬件实现
SPI 驱动层-通信协议层
SPI 链路传输层--通信协议管理,应用数据分片等
SPI 应用层
周期性报文--结构化输出输出
数据格式-- Header+ content
Header
MessageID MeasageName MessageDirection MessageDescription
开发代码集成
操作系统调用
驱动
CAN信号的数据形式
汽车电子范畴常用到的两种数据库:dbc,CDD(还有一种用于标定的数据库A2L)。
DBC解析属于收发报文之后的事情
dbc;
dbc(data base CAN)文件描述单一CAN网络中各逻辑节点信息,
依据该文件可以用来监视何分析CAN网络中所有逻辑节点的运行状态信息。习惯叫它通信数据库
比如现在以车载娱乐系统为例,作为与车载其他节点数据交互频繁的节点,
车载娱乐系统需要实时反馈其他节点状态。最典型的莫过于与倒车雷达和车身空调控制器的交互。
OEM在研发款新车时,会先确定整车网络拓扑(谁是网管,谁是其中网络节点)。
对于CAN网络,会定义网络通信内容。确定网络中有那些节点(Nodes)、用到那些CAN通信报文(Messages)、报文中包含那些信号(Signals)。
这些内容一般存在方式是Excel或者PDF文件。这时将其内容编辑成数据库形式:
1、 数据库为dbc;
2、 编辑工具为CANdb++ Editor
二
CDD是业界常用的诊断数据库,通过CANdelaStudio工具编辑生成
Vector软件 CANdb++
Vector品牌下的CANdb++软件产品编辑器提供了可视化的选项中包含的数据容易DBC数据库和修改数据。
为此它包含专业、面向应用的数据视图
DBC数据库中描述的属性可以网络,ecu连接到总线,消息和信号。
CANdb + +编辑器提供了可视化的选项中包含的数据容易DBC数据库和修改数据。 为此它包含专业、面向应用的数据视图。
CANdb + +编辑器支持开发人员在开发过程的不同阶段:
DBC文件的创建
向现有DBC添加消息和信号数据库
发射和接受关系的定义
仿真的定义环境变量
添加特殊消息用于测试目的
添加消息校准ecu
初始化阶段
demo车,通常软件模块使用ROS作为middleware进行开发,
在ROS系统上运行 peception model, localization model, path planning model 等,
control model的ROS节点发出制动油门转向信号,通过CAN网络控制车辆的加减速和转向
CAN硬件连接:
01.计算机通过Kvaser Leaf hardware硬件连接CAN上某一节点,
使用kvaser canking发送模拟CAN信号--CAN总线分析仪- Kvaser 模拟CAN节点
02.启动另外一台计算机,在ubuntu系统下导入socket_can模块
启动ROS程序,初始化ROS package:'socket_can',编译‘listener.cpp’,'talker.cpp'和‘socket_can.cpp’代码,
代码使用socket_can包实现ROS和CAN通信功能
启动 talker和listener两个nodes,观察CAN与ROS通信结果
感知硬件连接:
Camera: camera --视频采集卡(Video Capture card) 将视频信号采集到电脑中,以数据文件的形式保存在硬盘上
lidar
Radar
涉及
ROS, socket-can, CAN卡的驱动
说明
Socket CAN涉及到CAN总线协议、套接字、Linux网络设备驱动等。
(1)CAN总线协议;
(2)Socket原理;
(3)Linux网络设备驱动
CAN是ControllerArea Network(控制器局域网)
CAN被细分为三个层次:
(1)CAN对象层(the object layer);
(2)CAN传输层(the transfer layer);
(3)CAN物理层(the phyical layer)
Socket采用C/S模型进行设计的,即Client/Server,面向客户端—服务器模型
数据报套接字(SOCK_DGRAM)
字节流套接字(SOCK_STREAM)
原始套接字(SOCK_ROW)
芯片-嵌入式开发
###固件
固件其实就是放在存储介质上的数据,当嵌入式板子启动时,
能够从特定的位置找到这些文件,使得板子能够跑起来,这些文件就是固件
嵌入式板子上电后,会去特定的位置寻找uboot,uboot初始化内存,初始化串口,设置linux启动参数以后,
会将内核从flash中加载到内存。然后内核会去挂载根文件系统并启动init
固件是指设备内部保存的设备“驱动程序”,通过固件,
操作系统才能按照标准的设备驱动实现特定机器的运行动作,比如光驱、刻录机等都有内部固件
###上位机
通讯
芯片--芯片与芯片之间数据交互通信,芯片与上位机数据交互通信
通信协议:
各通信层
各通信层的数据格式-Message Formats
芯片的硬件
芯片的连接方式--硬件的连接关系
SPI总线
通信层--物理层 驱动层 数据链路层 传输层 应用层
开发上位机软件 和使用上位机软件
开发平台:Qt 使用C++
WinForm 使用C#
通信链路: 网线和串行线
基本操作: 读和写
读: 读取网口给的数据,读取结果
写: 启动仪器,修改仪器参数
###下位机--设备
名称- 传输方式-通信协议-数据
###目标处理器
目标处理器或者 仿真器(emulator)和模拟器(simulator)
仿真器(emulator)的目的是作为目标系统的替代品,可以完全替代目标系统,完成其对外的功能,
即仿真器系统只需要保证呈现给外部的行为跟目标系统一致
-- linux下面的开发大多是使用通用的网络协议
###烧录:
####开发阶段:
预留下载接口进行固件下载,
芯片烧录系统
####流片阶段
在电子设备smt焊接之前通过芯片适配座和特定的烧录器对mcu进行烧录和初始化变量
参考
SPI接口扫盲 SPI定义/SPI时序(CPHA CPOL) https://blog.csdn.net/douqingl/article/details/50452355
Linux下若没有SPI控制器,GPIO火速来救主!https://my.oschina.net/u/4280959/blog/4776730
SPI通信协议介绍及调试方法
CAN报文DBC解析的编程方法说明 https://www.vecll.com/news/10.html
自动驾驶系统:CAN与ROS通信 https://zhuanlan.zhihu.com/p/48632100