完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
根据例程更改序列采样,利用一个定时器定时进行序列采样,自动放入DMA缓冲区,由于需要的通道和数据较多,设置缓冲区大于1024位,现发现当我设置大于1024,例如2048位的时候,Printf()输出就全变成了零,多次尝试更改大于,只要大于1024就会出现这种问题,哪位大侠能协助解决。 #define APP_ADC16_SEQ_START_POS (0U) #ifndef APP_ADC16_CORE ATTR_RAMFUNC_WITH_ALIGNMENT(ADC_SOC_DMA_ADDR_ALIGNMENT) uint32_t seq_buff[APP_ADC16_SEQ_DMA_BUFF_LEN_IN_4BYTES]; 上面是数据的定义。 hpm_stat_t process_seq_data(uint32_t *buff, int32_t start_pos, uint32_t len) if (ADC16_IS_SEQ_DMA_BUFF_LEN_INVLAID(len)) { for (int i = start_pos; i < start_pos + len; i+=8) { return status_success; } 这是数据打印输出的程序部分,与例程没多大区别。 |
|
相关推荐
2个回答
|
|
|
打扰各位了,我自己找到问题所在了,SDK在hpm_soc_feature.h里定义了序列采样模式下DMA缓冲区最大内存数为4096U,按4byte计算在APP里最大只能定义1024了,如果加大此数,相应也会允许APP里增加到最大内存数。
hpm_soc_feature.h里的定义:#define ADC_SOC_SEQ_MAX_DMA_BUFF_LEN_IN_4BYTES (4096U) 我的采样APP里的定义:#define APP_ADC16_SEQ_DMA_BUFF_LEN_IN_4BYTES (1024U) |
|
|
|
|
|
感谢各位,找到问题了,例程里有个判据if (ADC16_IS_SEQ_DMA_BUFF_LEN_INVLAID(len)) {
return status_invalid_argument; 它判断DMA缓存是否越限的,而在hpm_soc_feature.h里定义了越限值是4096,为4byte1024的上限,如果需要更多缓存,更改hpm_soc_feature.h里的越限值就可以了。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
457个成员聚集在这个小组
加入小组1402 浏览 0 评论
HPM5E00EVK,ecat_io例程,卡在DisableSyncManChannel函数
1095 浏览 1 评论
1854 浏览 2 评论
1277 浏览 1 评论
HPM monitor studio 只能在 hpm芯片+hpm_sdk 的组合下才能用吗?
1651 浏览 0 评论
5843浏览 22评论
2697浏览 4评论
自己做的hpm5321和6750板子怎么都没有1.1的输出呢?
2724浏览 4评论
编译错误: error: unrecognizable insn,不知道原因,请教!
925浏览 4评论
1831浏览 3评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 18:56 , Processed in 0.624754 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1713
