编辑: NaluLee 2019-07-04

1000 帧/秒,当计算机性能较好时 可以适当提高传输流量.由于 CAN 波特率本身就是一个限制帧流量的主要因素,因此 在较低波特率下系统资源将大大减少.CAN 系统在设计时应保证总线占用率不超过 60-70%,在此范围内 PCI-98XX 系列能满足大多数应用的需求. 4. 通讯波特率如何设置? 上位机软件提供一组常用的波特率的设置值,若要使用其他的波特率,请参照 SJA1000 数据手册自行计算.需要注意:PCI-98XX 通讯卡的 CAN 控制器使用 16MHz 时钟,用户自定义波特律时要根据该时钟频率进行计算. 5. 系统进入待机或睡眠状态是否影响接收? 有影响.这时所有处理将停止,最大可能导致硬件接收缓冲溢出错误.若有程序打 开设备将尝试阻止系统进入待机或睡眠状态,从而保证系统正常工作.使用 PCI-98XX 通讯卡时请禁止系统的待机和睡眠功能. 6. 如何处理应用中的错误? 错误主要分为函数调用错误和 CAN-bus 通讯错误两种. 函数调用错误一般由参数错误引起, 如: 设备号超出范围, 类型号错误等, 用Win32 函数 GetLastError 返回的错误号是 87, 还有的是对未打开的设备进行操作, 实际是对一 个非法句柄操作,根据具体函数调用情况都有相应的 Win32 标准错误码提供,用户可 以使用 GetLastError 进行错误分析,这部分除错工作一般应该在设计时完成. 对于 CAN-bus 通讯错误,一般由 CAN 网络引起,也可能因用户设置不当而引起, 如:波特率设置不一致、没有启动 CAN 控制器便调用发送函数等.大部分错误已经在 工业级 PCI 接口通用 CAN 卡 产品用户手册?2019 Guangzhou ZHIYUAN ElectronicsCo., Ltd..

13 PCI-98XX 系列用户手册 设备驱动中作了简单的处理,如果要进行更深层次的错误分析和处理,可以调用 VCI_ReadCANStatus 函数. 另外需要注意的是数据溢出中断错误,它的产生有两种可能:(1) 软件接收缓区冲 溢出. 这说明应用程序无法及时处理接收到的数据, 这时用户应该优化应用程序或更改 通讯策略.(2)硬件接收缓冲区溢出.产生这种错误是由于接收端 PC 中断延迟太大而引 起的.只能通过提升计算机性能或协调其余节点适当降低发送速度来解决. 7. 打开关闭设备要注意哪些事项? PCI-98XX 系列提供 1~4 个CAN 端口,用户能够独立操作不同的端口.该通讯卡 允许共享方式打开设备,同一个设备可被不同进程通过调用 VCI_OpenDevice 函数多次 打开,使得在不同进程中使用不同的通讯端口成为可能,但在同一进程中多次调用 VCI_OpenDevice 函数实际只会打开一次设备.因此,尽可能不要在不同进程中共享同 一个端口.VCI_OpenDevice 和VCI_CloseDevice 函数一般在应用程序初始化和退出时 只需要调用一次. 当关闭设备时若能当前端口不再使用, 应该先调用 VCI_ResetCAN 函数使当前端口 脱离 CAN 总线,设备驱动程序只会在最后一个设备句柄关闭时才自动调用 VCI_ResetCAN 退出 CAN 总线的连接. 8. 如何使用中断方式操作通讯卡? PCI-98XX 系列不提供直接操作中断的接口,因为中断已经在驱动程序中处理了. 需要在应用程序中操作中断的多数原因是: 程序不知道数据何时能到达设备, 需要得到 一个接收消息的触发才能从缓冲读取数据. 解决这个问题的一般手段是使用多线程 (或 多任务) . 即启动一个新的线程, 在线程中循环调用 VCI_Receive 函数来查询接收缓冲. VCI_Receive 内部已实现了阻塞机制,在缓冲里没有数据时会挂起调用线程,这时不会 占用 CPU 的时间,应用程序仍然可以处理其他事务. 9. 如何更好的使用 ........

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题