Pmod CAN参考手册
Digilent Pmod CAN (Revision B)是一个具有集成收发器的CAN 2.0B控制器。嵌入式微芯片MCP25625芯片直接连接到物理CAN总线,满足汽车对高速(1mb /s)、低静态电流、电磁兼容性和静电放电的要求。
下载本参考手册
特性
-
独立的CAN 2.0B控制器与一个集成的CAN收发器
-
兼容ISO-11898-1、ISO-11898-2和ISO-11898-5
-
适用于汽车应用
-
高达1 Mb/s的操作
-
10兆赫SPI时钟速度
-
传输缓冲区的优先级和终止功能
-
2接收缓冲区
-
在前两个数据字节上有6个过滤器和2个掩码可选的过滤
-
中断输出引线
-
用于安全连接的标准DB9连接器
-
适用于12v和24v系统
-
用于灵活设计的小PCB尺寸1.4 in x 1.8 in (3.6 cm x 4.6 cm)
-
带有SPI接口的12针Pmod连接器
-
遵循Digilent接口规范1.1.0
规范
参数 | 最小值 | 典型的 | 马克斯 | 单位 |
---|---|---|---|---|
电源电压(Vcc) | 2.7 | 5.5 | V | |
高电压输入(RxCAN) | 2 | - | Vcc + 1 | V |
低电平输入电压(RxCAN) | -0.3 | - | 0.15 * Vcc | V |
高输出电压(TxCAN) | vcc - 0.7 | - | - | V |
低输出电压(TxCAN) | - | - | 0.6 | V |
一些频率 | 14.4 | - | 1000 | 千赫 |
发射机 | 最小值 | Typ | 马克斯 | 单位 |
隐性母线输出电压(CANH & CANL) | 2.0 | 0.5 Vcc | 3.0 | V |
主导输出电压(CANH) | 2.75 | 3.50 | 4.50 | V |
主导输出电压(CANL) | 0.50 | 1.50 | 2.25 | V |
优势差分输出电压 | 1.5 | 2.0 | 3.0 | V |
接收机 | 最小值 | Typ | 马克斯 | 单位 |
隐性差分输入电压(正常模式) | -1.0 | - | + 0.5 | V |
主导差分输入电压(正常模式) | 0.9 | - | Vcc | |
参数 | 价值 | 单位 | ||
待机电流 | 10 | μ一 |
引脚分配表图
头J2 | 头j - 1 | :头J3 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
销 | 信号 | 描述 | 销 | 信号 | 描述 | 销 | 信号 | 描述 | 销 | 信号 | 描述 | 销 | 信号 | 描述 |
1 | CS | 芯片选择 | 7 | INT | 中断 | 1 | N / C | 没有连接 | 7 | CANH | 高电压I/O可以吗 | 1 | CANL | 低电压I/O可以吗 |
2 | 莫西人 | Master-Out-Slave-In | 8 | RST | 重置 | 2 | CANL | 低电压I/O可以吗 | 8 | N / C | 没有连接 | 2 | CANH | 高电压I/O可以吗 |
3. | 味噌 | Master-In-Slave-Out | 9 | Rx0BF | 接收缓冲区0完全中断 | 3. | 接地 | 地面电源 | 9 | N / C | 没有连接 | 3. | 接地 | 地面电源 |
4 | SCK | 串行时钟 | 10 | Rx1BF | 接收缓冲区0完全中断 | 4 | N / C | 没有连接 | S1 | 接地 | 地面电源 | 跳投 | ||
5 | 接地 | 地面电源 | 11 | 接地 | 地面电源 | 5 | N / C | 没有连接 | S2 | 接地 | 地面电源 | JP1 | 加载/卸载 | 总线的末端以组合120Ω阻抗终止/不终止总线的末端 |
6 | VCC | 电源(3.3 v) | 12 | VCC | 电源(3.3 v) | 6 | 接地 | 地面电源 | JP2 | 加载/卸载 | 用电容对地/无终端终止CAN总线线路 |
物理维度
针头上的针间距为100密耳。PCB是1.8英寸长在侧面平行于针头上的针和1.4英寸长在侧面垂直于针头。
功能描述
Pmod CAN利用微芯片MCP25625能够与各种外部设备进行CAN通信。一个完整的CAN解决方案和一个控制器和收发器可以实现在一个系统板上通过主机板通信通过SPI协议在SPI模式下0或3。收发器上的两条差分线,CANH和CANL,使平衡差分信号能够消除大部分电磁场(EMF),并在系统内提供较高的抗噪声能力。
串行通信
Pmod CAN通过主控板与主机板通信SPI协议.通过驱动和保持芯片选择线(销1)在逻辑级别较低时,用户可以与Pmod来回通信,这取决于是否两组数据线都启用了。Pmod上的嵌入式芯片在SPI模式0或3中工作,数据捕获在时钟的上升边缘和数据传输在时钟的下降边缘,最小的时钟周期时间为100纳秒,如表7-6(70页)微芯片MCP25625数据表.
9条SPI指令可用于读取接收器的状态,加载发送缓冲区,修改寄存器中的位等等。大多数指令命令是后跟一个地址字节的单字节指令。更多信息可在快速启动以及第5节(第55页)MCP25625数据表.
注册详细信息
CANINTE
CANINTE寄存器(第51页)允许在上生成中断销7.
CANINTE 0 x2b | ||||
---|---|---|---|---|
位名称 | 一些数量 | 一些描述 | 位的值 | 功能描述 |
MERRE | [7] | 消息错误中断使能位 | 0¹ | 1在接收或传输消息时错误中断/0-禁用 |
WAKIE | [6] | 唤醒中断使能位 | 0¹ | 中断CAN总线活动/0-禁用 |
ERRIE | [5] | 错误中断使能位 | 0¹ | 中断在EFLG错误条件改变/0-禁用 |
TX2IE | [4] | 发送缓冲区2空中断使能位 | 0¹ | 中断TXB2变为空/0-禁用 |
TX1IE | [3] | 发送缓冲区1空中断使能位 | 0¹ | 中断TXB1变为空/0-禁用 |
TX0IE | [2] | 发送缓冲区0空中断使能位 | 0¹ | 中断TXB0变为空/0-禁用 |
RX1IE | [1] | 接收Buffer 1完整的中断使能位 | 0¹ | 当rxb1 /0接收到消息时中断 |
RX0IE | [0] | 接收缓冲区0完整中断使能位 | 0¹ | 当rxb0 /0接收到消息时中断 |
¹-上电或复位时的默认值
CANINTF
CANINTF寄存器(第52页)保存着通过CANINTE寄存器启用的所有中断的标志。如果一个中断标志被设置,它必须被系统板清除以重置中断条件。
CANINTF 0 x2c | ||||
---|---|---|---|---|
位名称 | 一些数量 | 一些描述 | 位的值 | 功能描述 |
MERRF | [7] | 消息错误中断标志位 | 0¹ | 1-中断等待/0-没有中断等待 |
WAKIF | [6] | 唤醒中断标志位 | 0¹ | 1-中断等待/0-没有中断等待 |
ERRIF | [5] | 错误中断标志位 | 0¹ | 1-中断等待/0-没有中断等待 |
TX2IF | [4] | 发送缓冲区2空中断标志位 | 0¹ | 1-中断等待/0-没有中断等待 |
TX1IF | [3] | 发送缓冲区1空中断标志位 | 0¹ | 1-中断等待/0-没有中断等待 |
TX0IF | [2] | 发送缓冲区0空中断标志位 | 0¹ | 1-中断等待/0-没有中断等待 |
RX1IF | [1] | 接收Buffer 1完整的中断标志位 | 0¹ | 1-中断等待/0-没有中断等待 |
RX0IF | [0] | 接收缓冲区0完整中断标志位 | 0¹ | 1-中断等待/0-没有中断等待 |
¹-上电或复位时的默认值
CANSTAT
CANSTAT寄存器(第54页)提供了CAN控制器的状态和中断标志的来源。
CANSTAT 0 xxe | ||||
---|---|---|---|---|
位名称 | 一些数量 | 一些描述 | 位的值 | 功能描述 |
OPMOD2 | [7] | 操作模式位2 | 1¹ | 请参见操作模式位表 |
OPMOD1 | [6] | 操作模式位1 | 0¹ | 请参见操作模式位表 |
OPMOD0 | [5] | 操作模式位0 | 0¹ | 请参见操作模式位表 |
- - - - - - | [4] | 未实现的 | 0¹ | 未实现-读为'0' |
ICOD2 | [3] | 中断标志码位2 | 0¹ | 参见中断标志码位表 |
ICOD1 | [2] | 中断标志码位1 | 0¹ | 参见中断标志码位表 |
ICOD0 | [1] | 中断标志码位0 | 0¹ | 参见中断标志码位表 |
- - - - - - | [0] | 未实现的 | 0¹ | 未实现-读为'0' |
¹−上电或复位时的默认值
操作模式位表
操作模式位表 | |
---|---|
位值为操作模式位2,1,0 | 模式 |
0,0,0 | 设备处于正常运行模式 |
0, 0, 1 | 设备处于睡眠模式 |
0 1 0 | 设备处于环回模式 |
0, 1, 1 | 设备处于单听模式 |
1, 0, 0 | 设备处于“配置模式” |
中断标志码位表
中断标志表 | |
---|---|
中断标志位2,1,0的位值 | 中断 |
0,0,0 | 没有中断 |
0, 0, 1 | 错误中断 |
0 1 0 | 唤醒中断 |
0, 1, 1 | TBX0中断 |
1, 0, 0 | TBX1中断 |
1, 0, 1 | TBX2中断 |
1 1 0 | RBX0中断 |
1, 1, 1 | RBX1中断 |
快速启动
下面是一系列在Pmod CAN上建立、发送和接收数据的SPI命令:
- 设置
-
-
设置CAN控制模式为配置模式
-
发送修改寄存器SPI命令(0x05)
-
发送控件MCP_CANCTRL的地址(0x0F)
-
发送一个掩码来准备东西(0x80)
-
发送命令将模块置于config模式(0x80)
-
-
设置CAN的配置速率和时钟
-
发送一个写SPI命令(0x02)
-
发送要修改的寄存器地址,后跟要设置的值
-
三个寄存器通过各种设置以这种方式进行操作;详细信息请参见《科学》第4.4节(第47页)MCP25625数据表.以下三个命令将CAN速度设置为250 kBPS, CAN时钟为20兆赫.
-
CNF1 (0x2A)设置为0x41
-
CNF2 (0x29)设置为0xFB
-
CNF3 (0x28)设置为0x86
-
-
-
Initiate可以缓冲过滤器和寄存器
-
将接收筛选器设置为标准或扩展标识符
-
对于所有标准输入和演示代码,将寄存器0x00到0x0B、寄存器0x10到0x1B和寄存器0x20到0x27的值设置为0x00。通过将寄存器0x30到0x3D、0x40到0x4D以及将寄存器0x50到0x5D的值设置为0x00,发送寄存器标志和设置也都被清除。这可以对每个寄存器执行以下步骤:
-
发送一个写SPI命令(0x02)
-
发送感兴趣的注册地址
-
发送要写入的值(0x00)
-
-
-
设置任何消息类型的CAN模式
-
发送修改寄存器SPI命令(0x05)
-
发送控件RXB0CNTRL的地址(0x60)
-
发送一个掩码来准备东西(0x64)
-
发送实际命令以接受任何消息类型(0x60)
-
-
设置CAN控制模式为正常模式
-
发送修改寄存器SPI命令(0x05)
-
发送控件MCP_CANCTRL的地址(0x0F)
-
发送一个掩码来准备东西(0x80)
-
将实际的命令发送到config模式(0x00)
-
-
- 收到
-
-
发送Read Status SPI命令(0xA0),查看是否设置了任何标志。Pmod将以一个字节的形式响应,详细描述如下的标志状态:
-
位7* (MSB)是TX2IF发送缓冲区2空中断标志位(CANINTF (0x2C)中的位4),必须由系统清除复位
-
位6是TXREQ消息发送请求位(位3在TXB2CTRL寄存器0x50)自动清除消息发送
-
位5*是TX1IF发送缓冲区1空中断标志位(CANINTF (0x2C)中的位3),必须由系统清除复位
-
位4是TXREQ消息发送请求位(位3在TXB1CTRL寄存器0x40)自动清除消息发送
-
位3*是TX0IF发送缓冲区0空中断标志位(CANINTF (0x2C)中的位2),必须被系统清除复位
-
位2是TXREQ消息发送请求位(位3在TXB0CTRL寄存器0x30)自动清除消息发送
-
Bit 1*是RX1IF接收Buffer 1空中断标志位(CANINTF (0x2C)中的Bit 1),必须被系统清除复位
-
Bit 0* (LSB)是RX0IF Receive Buffer 0空中断标志位(CANINTF中的Bit 0 (0x2C)),必须被系统清除复位
-
*-这些中断标志默认在CAN中断使能寄存器(地址0x2B)中被禁用
-
-
如果接收缓冲区中有数据,则通过与接收缓冲区相关联的DLC寄存器的四个lsb确定消息的长度(RXB0DLC为0x65, RXB1DLC为0x75)
-
在读取数据后,重置由清除CANINTF (0x2C)寄存器中适当的位0 (RX0IF)或位1 (RX1IF)所触发的中断标志。
-
- 传输
-
-
通过Load TX Buffer SPI命令加载数据。6种不同的起始位置
-
从标准标识高寄存器(0x31) - 0x40开始发送缓冲区0
-
从数据字节寄存器(0x36)开始发送缓冲区0 - 0x41
-
从标准标识高寄存器(ox41) - 0x42开始发送Buffer 1
-
从数据字节寄存器(0x46) - 0x43开始发送Buffer 1
-
从标准标识高寄存器(ox51) - 0x44开始发送Buffer 2
-
从数据字节寄存器(0x56) - 0x45开始发送缓冲区2
-
-
对三个感兴趣的寄存器中的一个或多个发送Request-To-Send SPI命令
-
传输缓冲区0 (TXB0)使用0x81
-
发送缓冲区1 (TXB1)使用0x82
-
发送缓冲区2 (TXB2)使用0x84
-
多个传输缓冲区可以同时启动或SPI命令
-
注意,这个命令实际上并不发起消息传输。MCP25625仍然在内部通过仲裁总线线路,只有当总线可用时才传输消息。
-
-
完成后,如果设置了CANINTE寄存器中的TXnIE位,则为指示控制器准备发送消息而设置的位将被清除,并产生一个中断。
-
应用程序信息
CAN协议使用两条通信线路,CANH和CANL,使多个被称为节点的CAN收发器之间能够通信。这两条母线被主动驱动产生大于1.5 V的差压,从而产生主导传输状态。CAN收发器将把主导传输解释为逻辑低状态。一个逻辑高状态是由两个总线驱动它们的线路,以便它们在大约相同的电压下空闲,典型的Vcc/2作为偏置的共模收发器。这种状态是一种隐性传输,通常具有小于±100毫伏的差分电压。
类似于UART在没有异步格式时钟信号的情况下传输数据时,CAN网络上的所有节点必须以相同的标称比特率操作。Pmod CAN兼容CAN 2.0B (ISO-11898-2和ISO-11898-5)。除了实际的RS-232报头,头j - 1,螺丝端子:头J3适用于其他使用双绞线的CAN设备。
从第58页的计时图MCP25625数据表Pmod CAN通过SPI输入和输出的数据如下所示。图中显示的参数定时值可以在表7-6(第70页)中找到MCP25625数据表.
额外的信息
Pmod CAN的原理图已准备好在这里.关于CAN控制器和收发器的额外信息,包括通信模式和芯片的具体时间可以在数据表中找到在这里.
演示如何从Pmod CAN获取信息的示例代码可以在其资源中心找到在这里.
如果你对Pmod CAN有任何问题或评论,请将它们发布在相应的部分(“附加板”)Digilent论坛.