首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

CAN发送缓冲寄存器能否一次写入3个message

CAN发送缓冲寄存器能否一次写入3个message

Can通讯里头的发送缓冲寄存器有3个,我要想发送4个message 。发送缓冲寄存器空中断使能,中断里头可以一次写入3个message 到buffer【0 1 2】中么,再次中断的时候,写message3到buffer[0]最后再关闭中断。(第一次中断的时候确定3个缓冲寄存器均为空)
  还是每次中断里头只能选择好一个buffer,写入一个message ,最后发送。这样写4次才能发送一个4个message.需要中断发生4次,每次只写入一个message 并发送一个message 。
打开发送中断后,先关该中断使能,每次进入中断选着一个发送缓冲寄存器写入 id 数据,数据长度,优先级,然后清除标识位,can就会自动发送了。此刻再打开该中断,如果还后空的发送缓冲寄存器那么会再次发生中断机可以继续写入数据。进入中断做个计数,当发生4次发送中断的话,就可以关闭发送中断使能了,这样就也完成4个message的发送了。我用的XGATE处理Can的发送中断。就是数据结构比较麻烦,似乎需要偶数个的字节的结构数据,这样才好用。要不主cpu和XGATE的处理会不同的。
学习围观,..............
专业生产电感
进入中断后,通过检查每个buffer是否为空,将待发数据写入,当然3个buffer可以同时都写入,注意指定每个buffer不同的优先级(可以设置为你的MESSAGE的计数值),然后在发送最后一组Message后,关闭发送的中断。这样做的好处是该控制器只要获得了总线后,只有发送完所有message才会释放总线。
返回列表