完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
IM玩我的第一个真正的PIC项目,我非常深刻的印象是疯狂的外设数量和PIC可用!总之,我试着思考如何使用ECAN模块来实现一个程序,但是我对于如何运行它有点迷茫。我已经详细地阅读了ECAN、DMA、中断、缓冲区等是如何相互通信的,所以这不是问题,问题是实现接收缓冲区的最佳方法,具体如下:smitmemTypeB:PIC必须简单地接收和重新发送,不需要额外的处理。从数据表来看,我可以在一个消息过滤器上使用FIFO,这样就不能解决我的问题,因为我有多个消息过滤器来容纳两种消息类型;我想要的是两个FIFO,一个FIFO对于类型A及其过滤器,以及类型B及其过滤器。到目前为止,我的想法是:设置两个FIFO,一个FIFO,一个FIFO,一个FIFO,一个FIFO,一个FIFO,一个FIFO,一个FIFO,一个FIFO,一个FIFO,一个FIFO,一个FIFO,一个FIFO,一个FIFO,一个FIFO,一个FI当过滤器命中发生时,DMA自动填充这些信息。我不确定DMA会为这样的功能设置什么寻址模式。为了传输这些消息,我认为我的程序将只是串行地填充用户定义的CAN缓冲区,并且发送DMA将在寄存器间接增量模式下操作以传输mes。我可能只是完全错了,所以如果有人愿意概括一下他们将如何处理这样的程序,比如设置接收缓冲区和DMA(用Post增量或外围间接寄存器间接寄存等等?)非常感谢。谢谢:
|
|
相关推荐
4个回答
|
|
我建议你先看一下你正在使用的微型计算机的勘误表。Pic33在使用DMA的某些寻址模式和传输缓冲区时有一些问题。过滤器掩码可以用来设置FIFO可以接收的消息Id的范围。
|
|
|
|
谢谢你的回复!我看到了勘误表,似乎并没有把ECAN模块中的任何东西都弄糟。它确实暗示了一些非常罕见的CPU DMA冲突,但是暗示它应该发生……我在想,有多少缓冲区被认为是足够的?我的意思是当指定缓冲区的数量到某个消息类型时,我应该考虑什么。面具真的允许我这样做,但这不会破坏过滤器的目的吗?因为从类型B中分类A类型,我必须在ISR中做一个IF逻辑。
|
|
|
|
您需要的缓冲区的数量取决于消息之间的周期和处理消息所用的时间。由于can消息之间的典型周期是几十mS,所以这通常不是问题。我使用的是dsPic33FJ微控制器,但是ecan模块无疑是类似的。可以在参考手册DS70185C第21节中为同一个消息ID分配多个缓冲器。ECAN'21.7.2.1注意:多消息缓冲可以由用户应用程序通过配置具有相同值的多个接受过滤器来实现。在这种情况下,接收的消息可以匹配多个过滤器,ECAN模块将把消息分配给指向空缓冲区的编号最少的匹配过滤器。
|
|
|
|
注:多消息缓冲,如果你不介意收到错误的消息,这是可以的。大多数普通的汽车类型的信息(灯开或关)都很好。诊断和其他消息确实关心订单,汤姆。
|
|
|
|
只有小组成员才能发言,加入小组>>
5161 浏览 9 评论
1999 浏览 8 评论
1928 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3171 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2226 浏览 5 评论
731浏览 1评论
613浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
503浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
629浏览 0评论
527浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 18:55 , Processed in 1.407996 second(s), Total 84, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号