CAN 驱动模型简介
CAN(Controller Area Network),即控制局域网,是一种串行通讯协议,在汽车电子、自动控制、安防监控等领域都有广泛的应用。CAN 总线协议仅仅定义了 OSI 模型中的物理层和数据链路层,在实际应用中,通常会在一个基于 CAN 基本协议的应用层协议进行通信。CAN 的基本协议中,使用帧为基本传输单元,类似于以太网中的 MAC 帧,CAN 控制器负责对 CAN 帧进行电平转换、报文校验、错误处理、总线仲裁等处理。
目前,CAN 应用层协议有 DeviceNet、CANopen、CAL 等,它们针对不同的应用场合有自己的协议标准。SylixOS 中的 CAN 总线架构位于“libsylixos/SylixOS/system/device/can/”下,该设备仅支持底层协议且封装为一个字符型设备,对其的读写操作都必须以 CAN 帧为基本单元,其架构如下图所示。