赌场网: [学习笔记] AutoChip的CAN例程谁测试了没有?为什么接受数据LED2不闪烁?

永利游戏开户直营
183|10
楼主
链接:http://www.ib955.com/920/uploadfiles/2019/09/ac781xmodulessample20190902.rar
路径是: .ac781xmodulessample\ac781xmodulessample\CAN_Sample
范例说明说是:
        上电后LED2,LED3处于熄灭状态,CAN配置正常模式,可接收可发送数据.
        上电后,CAN以100ms的周期发送数据,连续发送2s时间后停止发送数据2s时间,依次循环.
        当CAN接收到数据时,LED2以50ms的频率闪烁,300ms内没有接收到任何数据,LED2立即熄灭.
        当CAN发送数据时,LED3以50ms的频率闪烁,当停止发送数据时,LED3立即熄灭.

看到的现象是EVB在主动发信息的时候,LED3是的确在闪烁了,可是发数据到EVB确没有见LED2闪烁,是不是例程还有些小问题?
有测试过这板子的朋友么?
沙发
| 2019-11-6 15:31 | 只看该作者
  1.         CAN_SetFilterParam( 0, 1, CAN_FILTER_CODE_MODE, FILTER_IDE_STD_ONLY, CAN1_RECV_DATA_ID1);//ê1ó?CODE?£ê????óê?STD??
  2.         CAN_SetFilterParam( 1, 1, CAN_FILTER_CODE_MODE, FILTER_IDE_STD_ONLY, CAN1_RECV_DATA_ID2);//ê1ó?CODE?£ê????óê?STD??
  3.        
复制代码


可以看下代码里面设置了接收过滤,看下你的报文是否被过滤掉了
板凳
 楼主 | 2019-11-6 15:39 | 只看该作者
JasonLee27 发表于 2019-11-6 15:31
可以看下代码里面设置了接收过滤,看下你的报文是否被过滤掉了

#define ONLY_RECV_STD_FRM                        (0)//只接收标准帧数据
#define ONLY_RECV_EXT_FRM                        (1)//只接收扩展帧数据
#define RECV_STD_EXT_BOTH_FRM                (2)//标准与扩展帧都接收
#define RECV_FRM_KIND_SEL                        (ONLY_RECV_STD_FRM)


看这个原版的默认配置,应该是只接受标准数据帧。
用USBCAN也是按标准帧下发,就是没有看到LED2闪烁,不知道哪里出了问题。

USB_CAN.png (54.68 KB, 下载次数: 0)

USB_CAN.png
地板
| 2019-11-6 15:57 | 只看该作者
hzocce 发表于 2019-11-6 15:39
#define ONLY_RECV_STD_FRM                        (0)//只接收标准帧数据
#define ONLY_RECV_EXT_FRM                        (1)//只接收扩展帧数 ...
  1.         canConfig.interruptEnable = TRUE;//ê1?ü?D??
  2.         canConfig.TSSS = TRUE;//ê1ó?′?·¢?í?o3???·¢?í
  3.         canConfig.canMode = CAN_MODE_NORMAL;
  4.         canConfig.autoReset = TRUE;//CAN BUSOFFoó,×??ˉ???′
  5. //        canConfig.filterList = g_canFilterTab;//?3?μ1y???÷éè??list
  6.        
复制代码


或者你把代码里面canConfig.filterList = g_canFilterTab;这句注释掉就好,不使用demo里面设置过滤器,这样就可以接收所有帧了
5
 楼主 | 2019-11-6 16:12 | 只看该作者
本帖最后由 hzocce 于 2019-11-6 16:38 编辑
JasonLee27 发表于 2019-11-6 15:57
或者你把代码里面canConfig.filterList = g_canFilterTab;这句注释掉就好,不使用demo里面设置过滤器, ...

感谢,是可以了,就是被过滤掉了!
这个list是啥意思?
0, 0, 0x00000000, 0x00000000
这4个元素是啥意思呢?
过滤的是数据? 还是0-15 这个是什么?

CAN_FilterControl                 g_canFilterTab[CAN_MAX_FILTER_NUM] =
{
        { 0, 0, 0x00000000, 0x00000000},   
    { 1, 0, 0x00000000, 0x00000000},   
    { 2, 0, 0x00000000, 0x00000000},
    { 3, 0, 0x00000000, 0x00000000},
    { 4, 0, 0x00000000, 0x00000000},
    { 5, 0, 0x00000000, 0x00000000},
    { 6, 0, 0x00000000, 0x00000000},
    { 7, 0, 0x00000000, 0x00000000},
    { 8, 0, 0x00000000, 0x00000000},   
    { 9, 0, 0x00000000, 0x00000000},   
    {10, 0, 0x00000000, 0x00000000},   
    {11, 0, 0x00000000, 0x00000000},
    {12, 0, 0x00000000, 0x00000000},
    {13, 0, 0x00000000, 0x00000000},
    {14, 0, 0x00000000, 0x00000000},
    {15, 0, 0x00000000, 0x00000000},
};
6
 楼主 | 2019-11-6 16:14 | 只看该作者
还有一个新发现,STLINK 居然可以给AutoChip下载,唯一就是JLINK 不用手动按下EVB上面的复位按钮,STLINK 需要手动去复位。
7
 楼主 | 2019-11-8 09:25 | 只看该作者
        canConfig.filterList = g_canFilterTab;//赋值过滤器设置list

#define CAN_MAX_FILTER_NUM           16         ///< CAN max filter number

CAN_FilterControl                 g_canFilterTab[CAN_MAX_FILTER_NUM] =
{
        { 0, 0, 0x00000000, 0x00000000},   
    { 1, 0, 0x00000000, 0x00000000},   
    { 2, 0, 0x00000000, 0x00000000},
    { 3, 0, 0x00000000, 0x00000000},
    { 4, 0, 0x00000000, 0x00000000},
    { 5, 0, 0x00000000, 0x00000000},
    { 6, 0, 0x00000000, 0x00000000},
    { 7, 0, 0x00000000, 0x00000000},
    { 8, 0, 0x00000000, 0x00000000},   
    { 9, 0, 0x00000000, 0x00000000},   
    {10, 0, 0x00000000, 0x00000000},   
    {11, 0, 0x00000000, 0x00000000},
    {12, 0, 0x00000000, 0x00000000},
    {13, 0, 0x00000000, 0x00000000},
    {14, 0, 0x00000000, 0x00000000},
    {15, 0, 0x00000000, 0x00000000},
};




//   {15, 0, 0x00000000, 0x00000000},   //  15, 0, 0x00000000, 0x00000000  这4个元素对应了什么?  这样一个过滤列表?不懂哎,有清楚的朋友么?
8
| 2019-11-8 15:24 | 只看该作者
hzocce 发表于 2019-11-6 16:12
感谢,是可以了,就是被过滤掉了!
这个list是啥意思?
0, 0, 0x00000000, 0x00000000

结构体里面有解释,代表过滤的硬件通道号,是否使能,掩码以及ID号
9
 楼主 | 2019-11-9 08:22 | 只看该作者
本帖最后由 hzocce 于 2019-11-9 08:25 编辑
JasonLee27 发表于 2019-11-8 15:24
结构体里面有解释,代表过滤的硬件通道号,是否使能,掩码以及ID号

十分感谢JasonLee27 大神的指导~~~
typedef struct
{
    uint8_t index;                 ///< Filter index
    uint8_t enable;                ///< Enable or disable
    uint32_t code;                 ///< Code data
    uint32_t mask;                 ///< Mask data
} CAN_FilterControl;


硬件通道号,是否使能,掩码以及ID号

1.   也就是只通过ID为“0x00000000“,数据为 0x00000000”的报文?
2.   只识别,接收ID为“0x00000000“,数据为 0x00000000”的报文?
3.   那 ” 硬件通道号 “ 怎么理解哎?

感谢~

10
| 2019-11-9 09:25 | 只看该作者
hzocce 发表于 2019-11-9 08:22
十分感谢JasonLee27 大神的指导~~~
typedef struct
{

首先,CAN有16个硬件过滤器,每个硬件通道号代表一个硬件过滤通道,也就是你可以有16种过滤规则,然后讲掩码和ID号,CAN过滤是基于ID过滤的,所以掩码和ID号都是对应CAN ID的规则,掩码表示你要检查的bit位,举个例子,你设置的掩码号bit0为0.表示该位需要检查,那么你接收的ID必须要和你设置的ID号的bit0匹配,否则就不会被接收。如果你掩码号bit0为1,表示ID的bit0不会检查,可以直接通过。我接触的芯片CAN模块的过滤器设计大体都是这个思路,你可以参照一下其他芯片。
11
 楼主 | 2019-11-9 10:04 | 只看该作者
JasonLee27 发表于 2019-11-9 09:25
首先,CAN有16个硬件过滤器,每个硬件通道号代表一个硬件过滤通道,也就是你可以有16种过滤规则,然后讲 ...

好,真的非常感谢~~
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

永利游戏开户直营 快速回复 返回顶部 返回列表
mg多手21点黄金桌 晋州百乐门娱乐城 洛克备用网址 大发888吉利彩票开奖号历史 9号彩票平台合法不
汇丰VR火星1.5分彩时时彩平台怎么样 mg电子游艺技巧 香港赛马彩票 百家乐快3时时彩开奖记录 申博游戏娱乐在线现金网登入
bbin游戏下载 捕鱼达人hd深海捕鱼达人官方网 365bet 申博软件 22tyc.com
新葡京国际娱乐场登入 澳洲国际广西快3开奖直播 澳门银河官方网站登入 伯爵娱乐pokwmnb989 太阳城亚洲娱乐城登入