-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[CANFestival Rtt] 自带例程Master402问题 #4
Comments
Sorry, 最近没上 github 回复晚了 |
谢谢你的回复。
} rt_device_set_rx_indicate(candev, canpara->filter->items[0].ind) 这句话发现参数类型不匹配。 |
|
1,can的filter设置我大概有个概念,对原始数据针的过滤 这应该是硬件层面的参数设置。 |
RT_CAN_USING_HDR我已经打开了,如果不打开编译错误会有很多。 |
|
期待本问题的根本解决方案~ |
|
谢谢大神回复
}; 2.1我追踪了一下程序 用PC的can测试设备发送了一针内容为 ID是0x180 EID:0 rtr:0 DLC:2 DATA1:1 DATA2:1 就是标准针 数据针 目标1号的PDO发送 数据带2个字节分别是1和2
2.4我发现在drv_can.c 的static int _can_recvmsg(struct rt_can_device *can, void *buf, rt_uint32_t fifo)里面 status = HAL_CAN_GetRxMessage(hcan, fifo, &rxheader, pmsg->data); 我不理解的地方在hdr为什么包含在原始针里,而标准里没有提到?我哪里理解错了? |
pmsg->hdr = (rxheader.FilterMatchIndex + 1) >> 1;
pmsg->hdr = (1+1)>>1 = 4 除非你设置的就-1 |
谢谢 我有点明白了.
} void InitNodes(CO_Data* d, UNS32 id) |
InitNodes 是在定时器里回调的,要检查一下你的 hwtimer 配置了 |
我在rtconfig.h里设定了 可是用timer_rtthred.c里面的initTimer一直不能调用到timer_timeout_cb 好奇怪?
} |
没有开启定时器,需要自己开启,在StartTimerLoop(&InitNodes)语句执行完成之后开启,因为该函数会调用SetAlarm(NULL, 0, init_callback, 0, 0),该函数又会调用setTimer(real_timer_value),real_timer_value=value=0,从而定时器关闭。 |
本人刚接触RT-Thread,最近有个项目需要控制一台变频器,通信方式是CANOpen CIA402的方式。
硬件是正点原子的 阿波罗stm32F767开发版
1,首先我在ENV里只激活了CAN 并且用周立功的CAN测试仪器 测试了can的通讯口,可以正常收发。
2,然后再在ENV里激活了CANFentival的组件
想测试一下系统自带的例子CIA402。
3,程序编译通过 下载后运行发现FINSH不能正常工作。
4,监控程序后发现程序在can_rtthread.c里面死循环
void canopen_recv_thread_entry(void* parameter)
{
struct can_app_struct *canpara = (struct can_app_struct *) parameter;
struct rt_can_msg msg;
rt_uint32_t e;
Message co_msg;
}
5,分析原因发现在can.h里
#define RT_CAN_FILTER_ITEM_INIT(id,ide,rtr,mode,mask,ind,args)
{(id), (ide), (rtr), (mode), (mask), -1, (ind), (args)}
把HDR定义为-1 导致 上面的 rt_event_recv 返回报错。
6,首先问题是,can.h里的初始化对吗?给的例子程序难道不能使用吗?
请高人指点一下。
The text was updated successfully, but these errors were encountered: