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

基于WinCE环境的CAN适配卡驱动程序的设计与实现 03

基于WinCE环境的CAN适配卡驱动程序的设计与实现 03

块的实现
  当CAN适配卡控制器在发送报文时,发送缓冲区对写操作是锁定的,这样CPU必须检查状态寄存器的发送缓冲区状态标志TBS,以确定可以将一个新报文写入发送缓冲区中,当发送缓冲区被锁定(即标志TBS=0)时,CPU周期性地查询状态寄存器,等待发送缓冲区被释放;当发送缓冲区被释放(即标志TBS=1)时,CPU将新报文写入发送缓冲区中,并置命令寄存器的发送请求标志TR,该标志导致发送的启动。一旦发送成功中断产生,表明CAN报文已经发送成功。重复上面的工作就可以完成发送多个CAN报文的工作。CAN_Write模块的流程图如图3所示。

图3 CAN_Write函数的流程图

  如果CAN接收到一个报文,该报文通过验收滤波器验收并放入接收FIFO,则产生一个接收中断。中断服务程序接收到这个中断后,将这个接收到的报文传送到由驱动程序维护的报文存储区中,并置位命令寄存器的释放缓存区标志RRB。CAN_Read函数并不等待来自CAN控制器的接收报文成功中断,而是读取保存在由驱动程序维护的报文存储区中的报文。CAN_Read函数的流程图如图4所示。

图4 CAN_Read函数的流程图

返回列表