完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在这个寄存器中有一个TXENm:TX/RX缓冲区选择位,它根据Spec用于确定TX缓冲区是发送缓冲区还是接收缓冲区。由于TX缓冲区是由DMA连接到ECAN模块,并且方向是从DPSRAM(或RAM)地址读取,写到ECANCiTXD寄存器。我很不明白为什么仍然可以设置缓冲区来接收?如果程序确实设置了缓冲区来接收,缓冲区如何以及在何处可以接收ECAN模块?
|
|
相关推荐
10个回答
|
|
有人能帮忙吗?
|
|
|
|
我一直在使用PIC24EP512GU810,它似乎有一个类似的,如果不是相同的CAN模块:它仍然是复杂的,但或多或少,你选择的缓冲区将用于发送或接收。现在我不确定你是否在你的应用程序中使用DMA,正如我在建议之后。AN:在这种情况下,您在DMA空间中分配缓冲区,因此您将在CAN设置中的“过滤器”定义的时隙中接收消息,即,匹配Sid和过滤器的每个消息都会自动存储在它的时隙中。A在TX配置中设置并发送出去。
|
|
|
|
你好,CinziaG,我其实理解你上面所说的机制,我要找的是理解这个寄存器的功能。不管怎样,谢谢你的建议!
|
|
|
|
我会说:“如果它被设置用于传输,它将不被用于接收,反之亦然。”
|
|
|
|
我使用的是dsPIC33F和PIC24E,我相信它们和你们的一样工作。在我的例子中,ECAN模块包含多达32个缓冲区,缓冲区0..7可以被配置为发送或接收。缓冲区8..31只接收。通过适当设置CiTRmnCON寄存器,可以决定缓冲区0..7是发送还是接收。如果配置用于发送的缓冲区,则它是发送缓冲区,反之亦然。在FiCTRL寄存器中,可以配置缓冲区的数量和FIFO起始缓冲区。下面是我用来实现这个目的的代码,用FIFO从缓冲区号4开始设置16个缓冲区。
|
|
|
|
在你的情况下,你可以为CAN TX和RX共享相同的缓冲区。由于TX和RX是由单独的DMA通道连接的,所以不必为TX和RX使用相同的缓冲区,对吗?我在手册中没有发现任何声明说CAN TX和RX必须使用相同的缓冲区。在我的例子中,我为CAN TX和RX分配了不同的缓冲区,这就带来了这个问题。
|
|
|
|
我尝试为TX和RX分配不同的缓冲器,但它不起作用…所以我回到另一个方法
|
|
|
|
哦,我用同一个缓冲区验证了我的代码,它是有效的。现在我想使用单独的缓冲区使代码易于维护,您确定它不能工作吗?如果是这样,我需要恢复我的代码。
|
|
|
|
我不敢肯定,我和你的理由一样,但……也许我应该花更多的时间去挖掘。最后,我的32个缓冲区,8个适合发送,其余的适合接收,使用标志等等,一切都足够了。当然,DMA错误表,至少在我的PIC上!
|
|
|
|
嗨,CinziaG,也许我会试试我的代码,看看是否有可能分开RX TX缓冲器。非常感谢!
|
|
|
|
只有小组成员才能发言,加入小组>>
5238 浏览 9 评论
2028 浏览 8 评论
1950 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3204 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2253 浏览 5 评论
776浏览 1评论
665浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
594浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
675浏览 0评论
575浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 21:34 , Processed in 1.353188 second(s), Total 64, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号