要掌握的重要寄存器 要掌握的重要寄存器又如下:模式寄存器;命令寄存器;状态寄存器;中断寄存 器;中断使能寄存器;总 线定时器0,总线定时器1;输出控制寄存器;时钟分频寄存器;屏蔽寄存器0-3; 验收代码寄存器0-3。而 以上寄存器的基本左右如下: ? 模式寄存器的作用:控制SJA1000 的状态模式有如:睡眠模式;自检测模式; 复位模式;只听模式。 ? 命令寄存器的作用:启动发送或自发送;释放接收寄存器;中止发送 ? 状态寄存器的作用:指示SJA1000 的状态,以判断是否可以进行下一步操作。 ? 中断寄存器的作用:当发生中断后,读其值可以判断是什么原因引起的中断。 ? 中断使能寄存器的作用:打开相应的中断。 ? 总线定时器的作用:设置通讯的速率。 ? 输出控制寄存器的作用:控制输出模式 ? 时钟分频寄存器的作用:控制CAN 总线采用那种模式。 ? 验收代码寄存器和屏蔽寄存的作用:决定接收哪类标志码的数据。注意验收 滤波器的设置。 在编写CAN 总线通讯程序时,主要编写函数由初始化函数,发送函数和接收函 数组成。其中发送函数一 般写为主动发送函数,接收函数一般采用中断接收。下面就简单介绍一下三个函 数的编写。 1. SJA1000 寄存器初始化配置顺序 (1)进入复位模式,进行配置 (2)配置时钟分频寄存器,决定Peil 模式还是Basic 模式。 (3)配置总线定时寄存器,确定波特率。 (4)配置中断使能寄存器,决定使用那几个中断 (5)配置输出控制寄存器 (6)配置验收码和屏蔽码,决定接收哪一类节点的数据 (7)退出复位模式,进入正常工作模式。 2. 发送数据顺序 (1)查询状态寄存器,判断是否正在接收,是否正在发送,是否数据缓冲区被 锁。 (2)配置发送缓冲区。 (3)配置命令寄存器,启动发送。 3. 接收数据顺序 (1)采用中断接收,关CPU 中断。 (2)判断是不是接收中断。 (3)判断是远程帧还是数据帧 (4)取数据 (5)开中断 (6)SJA1000 的中断管脚连接单片机的INT1 外部中断。当收到一包数据后,通知CPU。 中断寄存器吗..通过读取它可各种各样的中断信息,不过前提是先要在中断使能寄存器中,使能相关的中 断服务,在头文件中他的定义是IR,而绝对地址值是0xfe03。中断寄存器一但被读取,所有位为自动复 位,RI 除外,RI 是根据RIE 的使能情况,而且只要RXFIFO 不空缺,RI 就一直置一,反乊当RXFIFO 被 释放后,如果不存在着报文,那么RI 就在复位状态。 假设一个案例, RIE=1 接受中断使能,然后分析以下的代码: Unsigned char temp; temp=IR; if( Judge & 0x01) { printf("Now Receiving Data..."); RX_Buffer[0]=RBSR; ...... ...... ...... 变量temp 从IR 中读取值,然后temp 变量中的值与0x01进行“与”运算,如果结果大于1,if 条件成立, 打印出“接受中...”,下文就是一一读取RXFIFO 中的值。 }
楼主,附件是AD09 Winter激活文件。