终端--通信和传输协议

核心概念

工作模式  传输时序

硬件

感知芯片-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
原文地址:https://www.cnblogs.com/ytwang/p/15271615.html