完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
嗨,我做了一个程序,接收CAN数据,然后通过UART(仅ID-EN数据)将接收到的CAN数据发送到终端。一切都很好,但是我收到了一些奇怪的数据,我想这个问题和CAN的FIFO配置有联系。我只使用一个接收FIFO(FIFO 1),并且大小为14(我通过一个ID发送数据,例如ID=0x710,用于通过CAN阅读器进行测试)。所发生的是,在我收到第十三或第十四个CAN数据之后,我收到了同样的ID,一个奇怪的数据。我通过CAN读取器发送恒定的相同数据,我从CAN读取器获得正确的数据,但是在第13或14次接收数据之后,我从相同的ID(不是我想要的数据)接收奇怪的数据,然后重复该过程。我得到正确的数据,在收到第十三或第十四个数据后,我收到来自同一ID的奇怪数据,为什么?计算FIFO缓冲区大小的正确方法是什么?我们如何确定我们将使用多少FIFO大小?我们如何确定我们将分配多少FIFO内存?我的控制器是PIC32 MX77,F512H,XC32编译器,MPLABX IDE V 3.20.我的FIFO配置示例。
|
|
相关推荐
3个回答
|
|
您可能需要查看原始内存,在那里放置了CAN缓冲区,看看这个“奇怪”的数据是否在RAM中。什么是一个日志的例子,你可以生成100个+或类似的消息,足以显示你遇到的问题。在我看来,您为正在设置的FIFO配置分配了足够的内存;我还为FIFO元素计算了64*32位的存储项。如果您在第13或14次RX之后能够可靠地重复执行代码的问题,那么可能必须查看指针值(CiUAFIFOn...)。当您有FIFO的基址时,计算FIFO的边界,看看这个寄存器是否表明下一个读取可能超出边界。它应该环绕在递增到最终元素之后,正如我使用PIC32 MX的CAN模块所经历的那样。我有一个PIC32 MX795F512L,CAN模块大部分工作得很好。我不认为你应该遇到任何“奇怪”的问题,如果编程正确。无论如何,请尝试看我的一些建议,希望你取得进步。
|
|
|
|
谢谢你的回答。我现在已经解决了这个问题。我是如何解决这个问题的?所以我把CANFIFO的值改为256,而不是64。显然,我没有分配足够的内存。如果你知道,你能给我一个公式来计算我必须分配的内存量吗?因为我讨厌编程而不理解。例如,我将从14个不同的ID接收数据,我必须精确分配多少内存?提前感谢。
|
|
|
|
您的分配是正确的;您只需要分配64个x32位值。我将记录来自CiFoCoCin的索引值,看看索引是否超出范围。同样,可以说,您可以同时查看CiFIFOUAn,以确保您的读/写不会因为任何原因超出范围。我的想法是将FIFO的索引(以及地址,如果想知道更多细节)存储到一些其他的调试/仪表阵列中,以便放置下一个RX或从其中读取下一个TX。如果我不使用数据只用消息FIFO,那么每个缓冲区需要4个DWORD,因此需要16个缓冲区*4个DWORDS/.=64个DWORD。你看过FIFO周围的公羊吗?这是有原因的,如果你没有发现,这可能会回来。也许检查你的设备的勘误表…也许你在做一些你不应该做的事?正如我前面提到的,我已经可靠地使用了PIC32模块在PIC32 MX795F512L上好几年,并不是一个主要问题…我用这个模块为汽车的目的服务几个主要的OEM的-谈论一些繁忙的网络!在附注中,我想象当您在RX/TX发生消息时设置UINC位时,您正在通过CiFIFOCONnSET寄存器推进当前FIFO的消息缓冲区索引,如errata中所述……FRM不强调这个,这是必须的!可能不是你的问题,而是一个必要的建议。
|
|
|
|
只有小组成员才能发言,加入小组>>
5257 浏览 9 评论
2038 浏览 8 评论
1958 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3219 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2269 浏览 5 评论
796浏览 1评论
689浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
620浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
687浏览 0评论
587浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-31 07:34 , Processed in 1.417773 second(s), Total 80, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号