原创 PIC18Fxx8之CAN发送缓冲器

2007-10-29 11:44 5424 10 12 分类: 汽车电子

1_001: 发送缓冲器


      PIC18Fxx8系列CAN有3个发送缓冲器,每个缓冲器都有14个字节的SRAM,处于模块的存储器地址中。


    若MCU要对信息缓冲器进行写访问,则TXREQ位必须清0以表示信息缓冲器已经将任何要发的信息清除。至少TXBnSIDH、TXBnSIDL和TXBnDLC寄存器必须被装载。如果信息中有数据字节,TXBnDm寄存器也应该被装载。如果信息使用扩展标识符,那么TXBnEIDm也应该被装载,而且将EXIDE位置1。


     在发送信息之前,MCU必须对TXBnIE位初始化以控制信息发送期间是否产生中断。同样,MCU也必须初始化TXP优先级位。


*************************************************************** 


(1) 发送缓冲器n控制寄存器TXBnCONbits: TXREQ发送请求状态位,1=请求发送信息,清除TXABT / TXLARB / TXERR位;0=当信息成功发送后自动清0  [注]当此位置1时,用软件清0将要求中止信息。


CAN发送缓冲器优先级位TXPRI1、TXPRI0  11=3级优先级(最高),10=2级优先级,01=1级优先级,00=0级优先级(最低)


(2) TXBnSIDH发送缓冲器n标准标识符高字节寄存器组,TXBnSIDL低字节寄存器组;TXBnDLC发送缓冲器n数据长度代码寄存器组;TXBnDm发送缓冲器n数据字节寄存器组; TXBnEIDH发送缓冲器n扩展标识符高字节寄存器组,TXBnEIDL低字节寄存器组;


(3) TXBnSIDLbits: EXIDE 扩展标识符使能位。1=信息将发送到扩展ID, SID10:SID0变成EID28:EID18; 0=信息将发送到标准ID,EID17:EID0被忽略。


(4) 外围中断使能寄存器组PIE3bits:CAN 发送缓冲器n中断使能位TXB2IE、TXB1IE、TXB0IE,1=使能发送缓冲器n中断,0=禁止发送缓冲器n中断


****************************************************************************


TRANSMIT BUFFERS
The PIC18FXX8 implements three Transmit Buffers. Each of these buffers occupies 14 bytes
of SRAM and are mapped into the device memory map.


For the MCU to have write access to the message buffer, the TXREQ bit must be clear, indicating that the message buffer is clear of any pending message to be transmitted. At a minimum, the TXBnSIDH, TXBnSIDL, and TXBnDLC registers must be loaded. If data bytes
are present in the message, the TXBnDm registers must also be loaded. If the message is to use extended identifiers, the TXBnEIDm registers must also be loaded and the EXIDE bit set.


Prior to sending the message, the MCU must initialize the TXBnIE bit to enable or disable the generation of an interrupt when the message is sent. The MCU must also initialize the TXP priority bits .

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户1787021 2014-9-26 21:53

我试了,怎么跟你结果不一样啊。post mapping和post fitting 都试了。用的quartus13.0

ilove314_323192455 2009-1-11 22:23

同意楼上的说法,但是情况往往没有想象中理想,应该更多的具体问题具体分析

用户1404984 2009-1-11 21:10

一个4输入的LUT,当输入和状态没有用完时,是有冗余资源的,但是应当注意的是输出只有一个,所以,和别的逻辑复用LUT的可能性就很小,除非一些非常巧合的情况,导致两个逻辑的输出“重合”。 在第二个例子中,左边的LUT资源没有用完,但是输出已经确定,无法和fout <= f | g; 复用,所以,自然就会出现很多未用尽的LUT。 所以,在前期设计时,要争取将输入做成4的倍数,以达到资源充分利用。 小弟愚见,权做抛砖引玉,这个问题很好,还请大家多讨论!

用户1027019 2008-4-15 11:17

to: linda 你留个E_mail吧,我发一段程序给你!

用户1070072 2008-4-10 14:54

请教版主,这个标识符具体是怎么设置?
相关推荐阅读
用户1027019 2015-03-12 10:35
LM2596器件选型
LM2596有不同生产商但提供的规格数据都一样。下图为典型12V输入,输出5V 3A电路。输出电压由R1 R2  Vref等决定 ,  Vout =Vref(1+R2/R1),Vref=1.23V固定...
用户1027019 2009-05-12 22:23
C语言 条件编译详解
预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。在C 语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根...
用户1027019 2009-04-22 16:31
c语言中volatile关键字
volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改。用volatile关键字声明的变量i每一次被访问时,执行部件都会从i相应的内存单元中取出i的值。没有用vo...
用户1027019 2009-04-10 18:09
什么是差动保护?
差动保护是输入的两端CT电流矢量差,当达到设定的动作值时启动动作元件。保护范围在输入的两端CT之间的设备(可以是线路,发电机,电动机,变压器等电气设备) 逆相序上面两位已经解释了,有功反向是逆功率而不...
用户1027019 2009-03-14 13:09
labview安装的技巧
labview安装的技巧2007-09-14 01:13下载: Labview8.0      Labview破解补丁首先下载labview8.2注册机,现在网上很多,随便提供个链接http://ww...
用户1027019 2009-02-07 22:31
LATEX文件中如何JPG插图?
使用一个名字叫ebb的工具。一般widows下装上Ctex都会带这个小工具,Linux下安装Latex后一般也会有,先用ebb生成对应的BoundingBox文件,如输入命令: ebb test.jp...
EE直播间
更多
我要评论
2
10
关闭 站长推荐上一条 /3 下一条