常见问题

1. 如何更好的使用Receive函数?

       设备驱动提供100000帧软件接收缓冲区, 这为应用编程人员提供了充足的反应处理时间。 当软件接收缓冲数据溢出时设备驱动程序将调用ResetCAN复位CAN总线, 同时置位CAN status的数据溢出中断标志位, 注意软件缓冲溢出和CAN控制器硬件缓冲溢出都是使用该标志位。  
       接收函数提供Wait参数适合用于多线程编程, 函数内部封装一个阻塞函数,其参数Wait含义如同Win32的WaitForSingleObject的dwMilliseconds参数(请参考Win32API说明), 它 为Receive指定一个超时返回时间, 单位为毫秒。  
        当Wait为0时函数调用时立即返回当前成功读取到的帧数, 若接收缓冲为空则返回0。 当Wait非0时, 若函数调用时接收缓冲中已经有数据则马上返回成功读取的帧数, 若这时接收缓冲为空, 函数将等待一个指定的超时到达或接收到数据才返回成功接收的帧数。 当Wait为0xFFFFFFFF时为无限等待直到有数据接收到, 建议不要把Wait设得过大, 无限等待更应该注意。  
       nFrames等于0时函数实际是一个通知消息返回, 不要求读接收缓冲区, 是一个特殊的技巧性用法。 注意: 若在主线程中调用Receive函数并且Wait非0则有可能引起应用程序暂时性的失去响应。 若通过查询方式接收, 一般应该把Wait设为0。  

2 . 如何更好的使用Transmit发送函数?

       USBCAN接口卡的驱动提供约128帧发送缓冲FIFO, 每次Transmit调用最多发送约128帧数据。 发送设备的发送速度由当前计算机软硬件性能决定, 一般连续发送速度在2000 fps 左右(标准数据帧11Bytes, 1Mbps), 若发送速度过快将有可能使远端接收设备数据溢出而失去响应, 这样用户可在应用编程中适当添加延时以降低发送速度。  
       发送过程中每一帧都有超时限制, 单帧发送时超时时间约2秒, 一次发送多 帧时最后一帧发送超时为2秒, 其余为1秒。 发送超时一般由于CAN总线繁忙且当前节点优先级较低时发生, 并不是函数调用或通讯错误, 用户可以编程实现重发(一般中低速网络极少发生发送超时事件)。 因此, 在系统设计时注意保证CAN总线占用不应该超过总线容量的60-70%。   

3. 如何使用中断方式操作通讯卡?

       USBCAN接口卡不提供直接操作中断的接口, 因为中断已经在驱动程序中处理了。 需要在应用程序中操作中断的多数原因是: 程序不知道数据何时能到达设备, 需要得到一个接收消息的触发才能从缓冲读取数据。 解决这个问题的一般手段是使用多线程(或多任务) 。 即启动一个新的线程, 在线程中循环调用Receive函数来查询接收缓冲。 Receive内部已实现了阻塞机制, 在缓冲里没有数据时会挂起调用线程, 这时不会占用CPU的时间, 应用程序仍然可以处理其他事务。  

4. 打开关闭设备要注意哪些事项?

       USBCAN-II FD接口卡提供2个CAN端口, 用户能够在同一程序中操作不同的端口。 USBCAN-II FD接口卡不允许共享方式打开设备, 同一个设备不可被不同进程通过调用OpenDevice函数多次打开。 OpenDevice和CloseDevice函数一般在应用程序初始化和退出时只需要调用一次。 当关闭设备时若能当前端口不再使用, 应该先调用ResetCAN函数使当前端口脱离CAN总线, 设备驱动程序只会在最后一个设备句柄关闭时才自动调用ResetCAN退出CAN总线的连接。  

5. 如何处理应用中的错误?

       错误主要分为函数调用错误和CAN(FD) -bus通讯错误两种。 函数调用错误一般由参数错误引起, 如: 设备号超出范围, 类型号错误等, 用 Win32函数 GetLastError返回的错误号是87, 还有的是对未打开的设备进行操作, 实际是对一个非法句柄操作, 根据具体函数调用情况都有相应的 Win32 标准错误码提供, 用户可以使用GetLastError 进行错误分析, 这部分除错工作一般应该在设计时完成。
       对于CAN(FD) -bus通讯错误, 一般由CAN网络引起, 也可能因用户设置不当而引起, 如: 波特率设置不一致、 没有启动CAN控制器便调用发送函数等。大部分错误已经在设备驱动中作了简单的处理, 如果要进行更深层次的错误分析和处理, 可以调用ReadCANStatus 函数。  
       另外需要注意的是数据溢出中断错误, 它的产生有两种可能: (1) 软件接收缓区冲溢出。 这说明应用程序无法及时处理接收到的数据, 这时用户应该优化应用程序或更改通讯策略。 (2)硬件接收缓冲区溢出。 产生这种错误是由于接收端 PC 中断延迟太大而引起的。 只能通过 提升计算机性能或协调其余节点适当降低发送速度来解决。  

6. 系统进入待机或睡眠状态是否影响接收?

       会有影响。 这时所有处理将停止, 最大可能导致硬件接收缓冲溢出错误。 若有程序打开设备将尝试阻止系统进入待机或睡眠状态, 从而保证系统正常工作。使用 USBCAN接口卡时, 请禁止系统的待机和睡眠功能。  

7. USBCAN 接口卡的通讯波特率如何设置?

       设备提供了一组常用的波特率的设置值, 若要使用其他的波特率, 请联系广成科技客服进行计算。 需要注意: USBCAN接口卡的CAN控制器使用24MHz时钟, 用户自定义波特率时要根据该时钟频率进行计算。  

8. 为何调用接口函数时系统非法操作?

       首先在使用接口函数时请认真阅读函数说明, 保证输入参数合法, 特别注意指针(地址)的传递, 或参照提供的例子程序, 倘若问题还是未能解决, 可联系我们的技术支持。

9. 为何CAN状态指示灯不亮?

       因为USBCAN接口卡的所有操作是受PC机控制的, 只有PC机发送了启动CAN通讯的命令后, CAN状态指示灯才会有意义。  

10. 一台计算机能否安装多块USBCAN接口卡?

       旧版的接口不支持多卡同时操作, 但是目前的 USBCAN接口卡, 支持多达8个同一型号的USBCAN接口卡同时操作。  

11. 是否一定需要使用 120Ω 终端匹配电阻?

       建议120Ω终端匹配电阻用于吸收端点反射, 提供稳定的物理链路。 当进行单节点的自发自收测试时必须连接该120Ω的终端电阻构成回路, 否则无法进行自发自收测试。 USBCAN高性能CAN接口卡内部已经连接有120Ω 的终端电阻。  

12. 在 GCANTools测试软件中, 为何显示“打开设备错误”?  

       可能产生此类故障的原因是: 设备类型选择不正确或USBCAN设备驱动没有正常安装。 在PC的设备管理器中检查 USBCAN设备属性, 看看有没有“! ”或“? ”在USBCAN设备前面; 若有, 则检查硬件/软件冲突, 并重新安装 USBCAN设备驱动程序。 设备类型选择USBCAN-FD。  

13.USBCAN FD设备的设备灯是什么意思

       USB 接口连接正常后,当PC 端有上位机软件调用USBCAN 设备时,USB 信号指示灯SYS 会闪烁。此时,当CAN1 或CAN2 有数据收发时,对应的CAN1、CAN2指示灯会有闪烁。若SYS 闪烁但CAN1 或CAN2 指示灯不亮,说明CAN 通道无数据请检查接线、通信波特率、匹配电阻等是否正确。具体可参照下表(单通道usbcan设备can灯状态参照CAN1、CAN2灯即可,ECAN设备tx和rx灯 状态参照CAN1、CAN2灯即可 )
以上状态在设备使用手册中均有介绍⇑

14.USBCAN FD的波特率和数据波特率有什么区别

15.发送信息提示发送失败

       1)检查接线是不是CANL接CANL,CANH接CANH
       2)波特率是否一致
       3)两个终端各有120欧姆电阻,是否有加。如果接入总线电阻在60欧姆左右

16.fd缓存数据是多少

       硬件缓存一万条

17.设备类型选择什么

       设备类型选择usbcan-fd
2025-11-21
0 0