龙芯CAN测试(sja1000)

摘要:
测试方案CAN0和CAN1相连,互相收发数据。使用标准模式CAN1发送数据CAN0接收数据。使用EJTAG中bin文件夹内的can.c代码,使用callbin的方式测试CAN的收发。Can.c中CAN默认工作在扩展模式。当测试CAN的标准模式时需要对代码进行如下修改。软件流程设置控制器进入复位模式检测到有复位请求后将中止当前接收/发送的信息而进入复位模式,一旦向复位位传送了1-0的下降沿CAN控制器将返回工作模式设置总线定时。接收数据:查询中断寄存器的RI接收中断是否为1。
测试方案
  1. CAN0和CAN1相连,互相收发数据。连接方式如下图:

龙芯CAN测试(sja1000)第1张

  1. 使用扩展模式CAN1发送数据CAN0接收数据。
  2. 使用标准模式CAN1发送数据CAN0接收数据。
  3. 使用EJTAG中bin文件夹内的can.c代码,使用callbin的方式测试CAN的收发。Can.c中CAN默认工作在扩展模式。当测试CAN的标准模式时需要对代码进行如下修改。
软件流程
  1. 设置控制器进入复位模式
    1. 检测到有复位请求后将中止当前接收/发送的信息而进入复位模式,一旦向复位位传送了 1-0 的下降沿 CAN 控制器将返回工作模式
  2. 设置总线定时。
    1. 总线定时0寄存器对应BTR0
    2. 总线定时1寄存器对应BTR1
  3. 设置标准模式还是扩展模式
    1. 向偏移地址为1的寄存器写0x81则为扩展模式
    2. 向偏移地址为1的寄存器写0x1则为标准模式
  4. 设置过滤,当消息的ID与上验收屏蔽值等于验收代码与上验收屏蔽值时,控制器接收消息。
    1. 扩展模式,设置寄存器偏移地址为16~23的寄存器,下图红色方框中。

龙芯CAN测试(sja1000)第2张

  1. 标准模式,设置寄存器偏移地址为4、5的寄存器

龙芯CAN测试(sja1000)第3张

  1. 向控制寄存器的RRbit写0,进入正常工作模式。
  2. 使能中断
    1. 扩展模式:向偏移地址为4的寄存器写入0xff。
    2. 标准模式:向控制寄存器写入0x1e打开中断。
  3. 发送数据
    1. 扩展模式:将发送的数据写入如下图所示寄存器。

龙芯CAN测试(sja1000)第4张

  1. 标准模式:将发送的数据写入如下图所示寄存器。

龙芯CAN测试(sja1000)第5张

  1. 需要保证发送的帧不被接受端所过滤掉。
  1. 发送数据:数据写入后,将命令寄存器的TR置1。
    1. 两种模式操作相同。
  2. 接收数据:查询中断寄存器的RI接收中断是否为1。为1则说明接收到数据。
    1. 两种模式操作相同。
  3. 读取接收的数据
    1. 扩展模式

龙芯CAN测试(sja1000)第6张

  1. 标准模式

龙芯CAN测试(sja1000)第7张

注意

CAN在每次发送/接收数据后需要复位。

CAN的两种帧格式

龙芯CAN测试(sja1000)第8张

龙芯CAN测试(sja1000)第9张

免责声明:文章转载自《龙芯CAN测试(sja1000)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇关于新能源的成本问题批量去除Teleport Pro整站下载文件冗余代码下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

用Tinkercad学arduino之 74HC595寄存器控制8个led跑马灯

项目地址:https://www.tinkercad.com/things/5nsSWyQOAkI-chenillard // Arduino Pattern Creator by PhilCam // http://my.free.time.free.fr/ // Use with Uno R3 + 74HC595 + 8 leds int d...

第51章 设置FLASH的读写保护及解除—零死角玩转STM32-F429系列

第51章     设置FLASH的读写保护及解除 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 本章参考资料:《STM32F4xx 中文参考手册》、《STM32F4xx规格书》、库说明文档《stm32f4xx_dsp_stdperi...

RTEMS 进程切换分析(基于i386体系)

在支持多任务操作系统中,进程切换是不可避免的,以使进程能在单个CPU上并发执行。进程的调度涉及到的东西较多,例如调度的时机、调度的策略等等,在这里我们只讨论RTEMS任务调度中进程切换的细节,通过分析以明白操作系统如何做到使一个CPU的使用权如何从一个任务上切换到另一个任务。 下面假设两个任务TASK1和TASK2,当前正在执行的任务executing =...

ASM

在学习汇编之前,我们要介绍一下常用的函数调用约定,以便我们对于一些指令的理解。 函数调用约定 常见的函数调用约定:stdcall , cdecl, fastcall, thiscall, naked call 1, __cdecl(C调用约定.)C/C++ 缺省调用方式 1)压栈顺序: 函数参数从右到左 2)参数栈维护: 由调用函数把参数弹出栈,传送参数的...

时序分析之Arrival Time

首先要理解两个概念:launch edge 和latch edge launch edge 是源寄存器发送数据的时钟沿,是时序分析的起点。 latch edge是目的寄存器捕获数据的时钟沿,是时序分析的终点。 如图示,源寄存器在0ns时发送数据,目的寄存器在5ns时采样数据,两者刚好相差一个时钟周期。 Data Arrival Time :从launch...

u-boot移植总结(三)(转)S3C2440对Nand Flash操作和电路原理(基于K9F2G08U0A)

S3C2440对Nand Flash操作和电路原理(基于K9F2G08U0A) 转载自:http://www.cnblogs.com/idle_man/archive/2010/12/23/1915303.html S3C2440内部集成了一个Nand flash控制器。S3C2440的Nand flash控制器包含了如下的特性: l        一...