这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » AT90CAN128 跪地求解AT90CAN128的命令问题,急急急???

共2条 1/1 1 跳转至

AT90CAN128 跪地求解AT90CAN128的命令问题,急急急???

院士
2006-09-17 18:14:16     打赏
AT90CAN128 跪地求解AT90CAN128的命令问题,急急急???



关键词: AT90CAN128     跪地     求解     命令     问题     急急    

院士
2006-12-22 22:43:00     打赏
2楼
问   由于CAN128这个片子采用的是MOB消息对象的方式,所以小弟不是很明白怎么来写入消息命令。比如,现在我有两个CAN128的片子:A和B。想让A发送给B一个数据桢的命令(两个字节:1、2), 然后B接收到命令后要响应一条数据桢的消息(两个字节:1、2)返回给A, 这应该怎么编呢???
  请各位高手们指点迷津~~~小弟不胜感激  1: 不知道和AT89C51CC01一样的CAN控制器吗?? 2: 如果一样到是可以帮你 3: tgb123兄,我也不知道CAN128和AT89C51CC01一不一样以下是我翻译的CAN128寄存器部分的资料
我现在主要的问题是不知道怎么才能让节点B(如我的求助帖子中所述)收到A节点的命令后响应给A一条数据桢消息。
通用控制寄存器CANGCON
ABRQ:放弃请求
0:无请求
1:CANCDMOB寄存器中CONMOB位的对每个MOB的一个复位。待决通信被立即禁止,进行中的通信将被正常终止,设置成合适的状态标志。
OVRQ:过载桢请求
0:无请求
1:在下一个接收桢之后发送一个过载桢
    过载桢可通过观察CANGSTA寄存器中的OVFG位来查出。
TTC:定时器触发通信
0:无TTC
1:TTC模式
SYNTTC:TTC同步
          0:TTC定时器在SOF上被捕获
          1:TTC定时器在EOF的最后一位上被捕获
LISTEN:只听模式
         0:无只听模式
         1:只听模式
TEST:测试模式
0:无测试模式
1:测试模式:为工厂测试而准备的,不是为用户使用的
ENA/STB:使能/备用模式
          因为这个位是一个命令且不是立即有效的,CANGSTA寄存器中的ENFG位给出了被选模式的真实状态。
          0:备用模式:进行中的通信被正常终止,CAN通道被冻结(每个MOB中的CONMOB位不改变)。发送器连续提供一个隐性电平。在这种模式下,接收器不被使能,但所有的寄存器和邮箱仍然可从CPU访问。
          1:使能模式:一旦11个连续的隐性位被读,则CAN通道进入使能模式。
SWRES:软件复位请求
        这个能自动复位的位只是将CAN控制器复位。
        0:无复位
        1:这个复位与硬件复位是“或”的关系。

通用状态寄存器CANGSTA
OVFG:过载桢标志
这个标志不会产生中断
0:无过载桢
1:只要产生的过载桢被发送,该位就由硬件置位
TXBSY:发送器忙
        这个标志不会产生中断
        0:发送器不忙
        1:只要一个桢(数据、远程、过载或者错误桢)或者一个ACK域被发送,该位就由硬件置位。当一个内部桢空间被发送的时候,也置位。

RXBSY:接收器忙
        这个标志不会产生中断
        0:接收器不忙
        1:只要一个桢被接收或者被监测,该位就由硬件置位
ENFG:使能标志
这个标志不会产生中断
0:CAN控制器禁止:因为一个使能或者禁止命令不会立即有效,这个状态位给出了被选模式的真实状态。
1:CAN控制器使能
BOFF:总线关闭模式
BOFF给出了CAN通道的状态信息。只有进入总线关闭模式才能产生BOFFIT中断。
0:无总线关闭模式
1:总线关闭模式
ERRP:错误被动模式
ERRP给出了CAN通道的状态信息。这个标志不会产生中断
0:无错误被动模式
1:错误被动模式

通用中断寄存器CANGIT
CANIT:通用中断标志
        该位只读
        0:无中断
        1:反映了除OVRTIM中断外的所有CAN控制器中断。该位能用于轮询方法。
BOFFIT:总线关闭中断标志
         写一个逻辑1来复位这个中断标志。BOFFIT标志只能当CAN入口处于总线关闭模式时设置。
         0:无中断
         1:当CAN入口处于总线关闭模式时,总线关闭中断
OVRTIM:超时运行CAN定时器
         写一个逻辑1来复位这个中断标志。进入CAN定时器超时运行中断处理程序也会复位该中断标志
         0:无中断
         1:当CAN定时器从0xFFFF到0x0000转换时该位置位
BXOK:桢缓冲接收中断
        写一个逻辑1来复位该中断标志。仅当所有MOB的CONMOB域都已被重写过,BXOK标志才能被清除。
        0:无中断
        1:脉冲串接收中断:当桢缓冲接收完成时该位置位。
SERG:通用Stuff错误
写一个逻辑1来复位该中断标志
0:无中断
1:stuff错误中断:监测到超过5个连续的相同极性位时。
CERG:通用CRC    错误
写一个逻辑1来复位该中断标志
0:无中断
1:CRC错误中断:CRC检验到CRC域没有被消息
FERG:通用Form错误
写一个逻辑1来复位该中断标志
0:无中断
1:form错误中断:CRC界定符、确认界定符或者EOF中有一个或者多个违规的固定格式。
AERG:通用确认错误
写一个逻辑1来复位该中断标志
0:无中断
1:确认错误中断:在确认的时间段中没有监测到显性位。
CAN通用中断使能寄存器CANGIE
ENIT:使能所有中断(除了CAN定时器超时运行中断)
0:中断禁止
1:CANIT中断使能
ENBOFF:使能总线关闭中断
          0:中断禁止
          1:总线关闭中断使能
ENRX:使能接收中断
0:中断禁止
1:接收中断使能
ENTX:使能发送中断
0:中断禁止
1:发送中断使能
ENERR:使能Mob错误中断
0:中断禁止
1:Mob错误中断使能
ENBX:使能桢缓冲中断
0:中断禁止
1:桢缓冲中断使能
ENERG:使能通用错误中断
0:中断禁止
1:通用错误中断使能
ENOVRT:使能CAN定时器超时运行中断
0:中断禁止
1:CAN定时器超时运行中断使能
CAN使能Mob寄存器CANEN2、CANEN1
ENMOB14:0  :使能Mob
该位提供Mob的有效性
当Mob使能(CANCDMOB寄存器中的CONMOB1:0位)时,该位置1。
一旦TXOK或者RXOK置1(TXOK自动应答),响应ENMOB复位。ENMOB置0来配置Mob禁止模式,应用于异常终止或者备用模式。
0:消息对象禁止:Mob对一个新的发送或者接收有效
1: 消息对象使能:Mob处于使用状态
CAN使能中断Mob寄存器CANSIT2、CANSIT1
位14:0   :Mob引发中断的状态
          0:无中断
          1:Mob中断
注:例如:CANSIT2=00100001:Mob 0&5中断
CAN时序寄存器1   CANBT1
BRP5:0   :波特率预定标器
          CAN控制器系统时钟Tscl周期可传播和确定单个位定时。
          Tscl=(BRP[5:0]+1)/clk frequency   这里是频率的形式,也可化为周期
CAN时序寄存器2   CANBT2
SJW1:0    :重复同步跳转宽度
为了比较不同总线控制器时钟振荡器间的移相,控制器必须重复同步跳转宽度来定义时钟周期的最大数。一个位周期可由一个重复同步来缩短或者延长。
Tsjw=Tscl  x (SJW[1:0]+1)
PRS2:0    :传播时间段
这部分位时间用于补偿网络中的物理延时。它是总线上单个传播时间总和的两倍,输入比较器延时或者输出驱动器延时。
Tprs=Tscl  x (PRS[2:0]+1)
CAN时序寄存器3   CANBT3
位6:4——PHS22:0    :段2
该段用于补偿段界限错误。该段可由重复同步跳转宽度来缩短。
Tphs2=Tscl  x  (PHS2[2:0]+1)
位3:1——PHS12:0    :段1
该段用于补偿段界限错误。该段可由重复同步跳转宽度来延长。
Tphs1=Tscl  x  (PHS1[2:0]+1)
SMP:采样点
0:一次,在采样点
1:三次,总线的“三次采样”是采样点和“两次超过Tscl周期1/2的长度”。该结果为三个值的主要判定的响应。
CAN定时器控制寄存器CANTCON
TPRSC7:0    :CAN定时预定标器
预定标器,CAN定时器向上计数范围是0到255。如果CAN控制器使能,则它为CAN定时器提供时钟。
CLKCANTIM=CLK x 8 x (CANTCON[7:0]+1)
CAN定时器寄存器CANTIML、CANTIMH
位15:0——CANTIM15:0    :CAN定时器计数,范围0到65535
CAN TTC定时器寄存器CANTTCL、CANTTCH
位15:0——TIMTTC15:0    :CAN TTC定时器计数,范围0到65535
CAN发送错误计数寄存器CANTEC
位7:0——TEC7:0   :发送错误计数,范围0到255
CAN接收错误计数寄存器CANREC
位7:0——REC7:0   :接收错误计数,范围0到255
CAN最高优先级Mob寄存器CANHPMOB
位7:4——HPMOB3:0   :最高优先级Mob数
    Mob在CANSIT寄存器中有最高优先级。如果CANSIT=0(没有Mob),返回值为0xF
位3:0——CGP3:0   :CAN通用目标位
    这些位能预先编程,来匹配CANPAGE寄存器的想要的配置(例如,AINC和INDX2:0设置)
CAN页Mob寄存器CANPAGE
位7:4——MOBNB3:0   :Mob数
    Mob数的选择,有效数范围0到14
AINC:自动增加FIFO CAN数据缓冲索引(低有效)
0:自动增加索引(默认值)
1:不自动增加索引
位2:0——INDX2:0   :FIFO CAN数据缓冲索引
    进入FIFO的CAN数据位的位单元,来定义Mob


Mob寄存器

CAN Mob状态寄存器CANSTMOB
DLCW:数据长度代码警告
    即将到来的消息不被DLC期望。无论是什么样的桢格式,CANCDMOB寄存器的DLC域都通过接收到的DLC来更新。
TXOK:发送OK
       这个标志能产生一个中断。它必须在整个CANSTMOB寄存器上用一个“读-修改-写”的软件程序来清除。发送使能通信结束。当控制器已经准备好发送一个桢,如果两个或者多个消息对象使能,低的Mob索引(0到14)会首先被供应。
RXOK:接收OK
    这个标志能产生一个中断。它必须在整个CANSTMOB寄存器上用一个“读-修改-写”的软件程序来清除。接收使能通信结束。如果两个或者多个消息对象接收,低的Mob索引(0到14)会首先被供应。
BERR:位错误(只当发送时)
这个标志能产生一个中断。它必须在整个CANSTMOB寄存器上用一个“读-修改-写”的软件程序来清除。该位被监测的值与该位被发送的值不一样。
例外:在仲裁域期间,被监测的接收位作为一个显性位发送,确认时间段在一个错误桢发送时监测到一个显性位。
SERR:Stuff错误
这个标志能产生一个中断。它必须在整个CANSTMOB寄存器上用一个“读-修改-写”的软件程序来清除。监测到多于五个连续相同极性位。这个标志能产生一个中断
CERR:CRC错误
这个标志能产生一个中断。它必须在整个CANSTMOB寄存器上用一个“读-修改-写”的软件程序来清除。接收器在从桢到数据域的开始每一个被接收的消息上执行一个CRC检查。如果这个检查不与CRC域匹配,则一个CRC设置被设置
FERR:Form错误
这个标志能产生一个中断。它必须在整个CANSTMOB寄存器上用一个“读-修改-写”的软件程序来清除。Form错误由以下位域里的固定格式的一个或多个违规引起:
CRC界定符、确认界定符、EOF
AERR:确认错误
这个标志能产生一个中断。它必须在整个CANSTMOB寄存器上用一个“读-修改-写”的软件程序来清除。在确认时间段里没有显性位被监测到。
CAN Mob控制和DLC寄存器CANCDMOB
位7:6——CONMOB1:0   :消息对象配置
    这些位设置通信被执行(复位之后没有初始值)
00-    禁止
01-    使能发送
    10-使能接收
    11-使能桢缓冲接收
    一旦通信被执行,这些位不被清除。用户必须重写配置来使能一个新的通信
    这个操作对于能复位BXOK标志是必要的。
    这个操作也在CANEN寄存器里设置响应位
RPLV:应答有效
    用于在接收一个远程桢后的自动应答模式
0-    应答没有准备好
1-    应答准备好并且有效
IDE:标识符扩展
远程桢或者数据桢的IDE位发送
该位通过接收到的远程桢或者数据桢的响应值来更新
0-CAN标准 2.0A(标识符长度-11位)
2-    CAN标准 2.0B(标识符长度-29位)
位3:0——DLC3:0   :数据长度代码
    消息的数据域中的位数目
    远程桢或者数据桢的DLC域发送。DLC的范围是从0到8。如果DLC域大于8,则有效的DLC=8。
    该域通过被接收的远程桢或者数据桢的响应值来更新。如果被期望的DLC与即将到来的DLC不一样,则一个DLC警告会在CANSTMOB寄存器中出现。
CAN标识符标志寄存器CANIDT1、CANIDT2、CANIDT3、CANIDT4
V2.0 A   位31:21——IDT10:0   :标识符标志
    远程桢或者数据桢的标识符域发送
               该域通过被接收的远程桢或者数据桢的响应值来更新。
    RTRTAG:远程发送请求标志
    远程桢或者数据桢的RTR位发送
    该目标通过被接收的远程桢或者数据桢的响应值来更新。
       RB0TAG:保留位0标志
    远程桢或者数据桢的保留位0发送
    该目标通过被接收的远程桢或者数据桢的响应值来更新。
V2.0 B 位31:3——IDT28:0   :标识符标志
    远程桢或者数据桢的标识符域发送
    该域通过被接收的远程桢或者数据桢的响应值来更新。
    RTRTAG:远程发送请求标志
    远程桢或者数据桢的RTR位发送
    该目标通过被接收的远程桢或者数据桢的响应值来更新。
    RB1TAG:保留位1标志
    远程桢或者数据桢的保留位1发送
    该目标通过被接收的远程桢或者数据桢的响应值来更新。
RB0TAG:保留位0标志
    远程桢或者数据桢的保留位0发送
    该目标通过被接收的远程桢或者数据桢的响应值来更新。
CAN标识符屏蔽寄存器CANIDM1、CANIDM2、CANIDM3、CANIDM4
V2.0  A  位31:21——IDMSK10:0   :标识符屏蔽
0-    比较真值强制
1-    位比较使能
    RTRMSK:远程发送请求屏蔽
0-    比较真值强制
1-    位比较使能
   
    IDEMSK:标识符扩展屏蔽
0-    比较真值强制
1-    位比较使能
V2.0  B   位31:3——IDMSK28:0   :标识符屏蔽
0-    比较真值强制
1-    位比较使能
          RTRMSK:远程发送请求屏蔽
0-    比较真值强制
1-    位比较使能
          IDEMSK:标识符扩展屏蔽
0-    比较真值强制
1-    位比较使能
CAN定时器标志寄存器CANSTML、CANSTMH
位15:0——TIMSTM15:0   :定时器标志计数
CAN定时器标志计数范围0到65535
CAN数据消息寄存器CANMSG
位7:0——MSG7:0   :消息数据
    该寄存器包括了指向页Mob寄存器CAN数据位
    在写页Mob寄存器后,该位与预先定义的标识符+索引的指定消息位相等。如果自动增加被使用,在数据寄存器结尾写或者读循环,索引自动增加。计数范围是8位没有结尾的循环(0,1,…,7,0,…)



    
4: 拜托了!!! 5: 看了一下英文的。好像是一样的。。看了一下英文的。好像是一样的。。你有什么问题。。?要不我发个51驱动给你你看看!!你邮件地址多少??

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]