完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
当我在PIC32 MZ2064 DAH169上计算内部DDR中存储的CRCOF数据时,我遇到了一些问题。我有以下代码,其中“test”位于SRAM中,“.”位于DDR KSeg1中的uint8_t*地址0xA82F_7F40。我最初将“test”数组放入“.”中以确认值,因为调试器不允许我访问DDR中的值。当DMA完成并调用事件处理程序时,SYS_DMA_ChannelCRCGet()返回0X0004_2A00。这甚至不是一个16位的值。我相信CRC计算停止了(或者从来没有开始),因为如果我将DMA副本的字节数减少1,就会得到相同的值。如果我使用“缓冲区”作为源、目的地或两者,则得到CRC值。如果使用“test”作为源和目标,则会得到一致的16位值,该值会随着复制的字节数而变化,这表明它可能是正确的值。是否可以使用DDR获得良好的CRC值?使用MPLABX V4.01、XC32 V1.44、和声V2.04、启动器套件与PIC32 MZ2064 DAH169。
|
|
相关推荐
8个回答
|
|
也许添加:在
|
|
|
|
你看了和声的实现吗?
|
|
|
|
我尝试了SysSdDMA信道启用BySysydMahanChnelFurcestART,但是CRC对于内部DDR DMA仍然是不正确的。
|
|
|
|
我最初从和声DMAYCRC示例开始。为了更好地显示问题,我已经将我的代码改回像dma_crc示例一样工作,这样我就可以使用实际的CRC值来显示问题。nNelEngDelphi使用缓冲区作为源,SysSdMahanChnelCCRGET()返回错误的0xA77 A的CRC。我确实验证了正确的数据是从缓冲区复制到DMA测试的。我相信问题是“缓冲区”在DDR中,而“测试”在SRAM中。SinceSYS_DMA_ChannelCRCGet()基本上只返回CRC寄存器值,我假设我没有为DDR/CRC正确设置DMA,或者这与内部DDR完全不工作。
|
|
|
|
只是想知道它是否与数据缓存有关——你是从缓存中复制到DDR的数据吗?
|
|
|
|
我使用的是KSG1 DDR地址空间(0xA8800)。我的理解是它没有被缓存。所有11个字节的数据通过DDMA传输从DDR复制到SRAM。为了确认这一点,我将SRAM阵列测试设置为零,然后在计算CRC之后检查它。
|
|
|
|
在考虑之后,将SRAM数组“test”初始化为零并不确认最后两个字节是DMA复制的,因为它们是零。我将“测试”数组的所有11个元素设置为0xFF。在计算CRC之后,“test”数组包含“.”数组的所有11个元素,表明DMA确实传输了所有数据。
|
|
|
|
有趣的是,这个问题不会发生在CRC32上。DDR和SRAM产生相同的CRC值,所以我用CRC32进行。同样,对于任何试图获得已发布的CRC值的人来说,CRC计算器athttp://www.zorc.breitbandkatze.de/crc.html对于获得已发布的CRC值非常有用。这是我发现的唯一的CRC计算器,它允许我改变CRC计算的参数。通过在获得由DMA计算的CRC值之前处理各种选项,我能够确定等效的直接初始值和必要的后crc值操作以获得发布的CRC值。
|
|
|
|
只有小组成员才能发言,加入小组>>
5231 浏览 9 评论
2026 浏览 8 评论
1950 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3200 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2253 浏览 5 评论
770浏览 1评论
659浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
587浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
668浏览 0评论
570浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 08:06 , Processed in 1.970476 second(s), Total 92, Slave 76 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号