zoukankan      html  css  js  c++  java
  • 终端--通信和传输协议

    核心概念

    工作模式  传输时序
    

    硬件

    感知芯片-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
  • 相关阅读:
    java实现网络监听
    程序员必须知道FTP命令
    Java进化的尽头
    Oracle逻辑备份与恢复(Data Pump)
    JQuery日期选择器插件date-input
    大型高并发高负载网站的系统架构剖析
    万言万当,不如一默为官之道
    angular.js高级程序设计书本开头配置环境出错,谁能给解答一下
    安装meteor运行基本demo发生错误。
    nodejs 通过 get获取数据修改redis数据
  • 原文地址:https://www.cnblogs.com/ytwang/p/15271615.html
Copyright © 2011-2022 走看看