查看: 4796|回复: 9

[求助] flexio 数据大小端问题 SHIFTBUF怎么正确使用

[复制链接]

该用户从未签到

8

主题

30

帖子

0

中级会员

Rank: 3Rank: 3

积分
461
最后登录
2021-2-27
发表于 2020-8-8 14:10:40 | 显示全部楼层 |阅读模式
本帖最后由 402227912 于 2020-8-8 14:12 编辑

使用flexio 8bit 传输16bit的像素数据,传输的数据是 0x6789   传输的顺序是0x89 0x67,
现在用的是4个移位器,4*4=16节拍,
不知如何这是才能让flexio 传输的顺序变成0x67 0x89,
我使用   SHIFTBUFBYS 之类的寄存器好像办不到,
例如0x12346789 变成 0x89673412 但是我想要的是0x34128967

回复

使用道具 举报

该用户从未签到

8

主题

30

帖子

0

中级会员

Rank: 3Rank: 3

积分
461
最后登录
2021-2-27
 楼主| 发表于 2020-8-10 11:18:53 | 显示全部楼层
顶一顶
回复

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24866
最后登录
2025-7-18
发表于 2020-8-10 16:04:08 | 显示全部楼层
楼主你好!
这种情况,如果是发送,或许需要修改你发送时候的buffer, 修改下对应的数据位置,然后再测试,是否能够纠正为你需要的结果?
如果是接收的话,接收之后的数据,代码里面再调整下存储处理。
另外,你使用的RT芯片具体型号是多少?
回复 支持 反对

使用道具 举报

该用户从未签到

8

主题

30

帖子

0

中级会员

Rank: 3Rank: 3

积分
461
最后登录
2021-2-27
 楼主| 发表于 2020-8-10 16:34:51 | 显示全部楼层
小恩GG 发表于 2020-8-10 16:04
楼主你好!
这种情况,如果是发送,或许需要修改你发送时候的buffer, 修改下对应的数据位置,然后再测试, ...

我使用的是RT1011的芯片 ,发送之前修改是不是太耗资源了 ,DMA 发送的数据量很大 ,
不知道能不能将部分计算多的代码放到ITCM,这个怎么实现
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24866
最后登录
2025-7-18
发表于 2020-8-10 17:05:32 | 显示全部楼层
402227912 发表于 2020-8-10 16:34
我使用的是RT1011的芯片 ,发送之前修改是不是太耗资源了 ,DMA 发送的数据量很大 ,
不知道能不能将部分 ...

如果需要部分数据放ITCM,你需要定义下memory块到ITCM地址,然后写一段函数,把函数直接放到你定义的ITCM内存块去,这样调用的时候,就会试ITCM的代码了。
回复 支持 反对

使用道具 举报

该用户从未签到

8

主题

30

帖子

0

中级会员

Rank: 3Rank: 3

积分
461
最后登录
2021-2-27
 楼主| 发表于 2020-8-11 10:59:07 | 显示全部楼层
小恩GG 发表于 2020-8-10 17:05
如果需要部分数据放ITCM,你需要定义下memory块到ITCM地址,然后写一段函数,把函数直接放到你定义的ITCM ...

像指定变量的地址一样吗 __attrubute__ ((section("itcm_section")))
回复 支持 反对

使用道具 举报

该用户从未签到

12

主题

49

帖子

0

中级会员

Rank: 3Rank: 3

积分
326
最后登录
2023-3-23
发表于 2020-8-11 13:17:01 | 显示全部楼层
配置好eDMA 加上ShifterBuffer的8中组合 该不用发送前修改数据的
回复 支持 反对

使用道具 举报

该用户从未签到

8

主题

30

帖子

0

中级会员

Rank: 3Rank: 3

积分
461
最后登录
2021-2-27
 楼主| 发表于 2020-8-11 16:24:44 | 显示全部楼层
wwllzz 发表于 2020-8-11 13:17
配置好eDMA 加上ShifterBuffer的8中组合 该不用发送前修改数据的

各种奇怪的都有, 就是没有16bit 的byte交换 pastedImage_1.png

回复 支持 反对

使用道具 举报

该用户从未签到

12

主题

49

帖子

0

中级会员

Rank: 3Rank: 3

积分
326
最后登录
2023-3-23
发表于 2020-8-13 07:45:36 | 显示全部楼层
本帖最后由 wwllzz 于 2020-8-13 07:47 编辑
402227912 发表于 2020-8-11 16:24
各种奇怪的都有, 就是没有16bit 的byte交换

FlexIO可以一次传输16位的 该可以实现字节交换. 最差情况是配置DMA小循环来搞定
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24866
最后登录
2025-7-18
发表于 2020-8-17 11:10:46 | 显示全部楼层
402227912 发表于 2020-8-11 10:59
像指定变量的地址一样吗 __attrubute__ ((section("itcm_section")))

可以用attribute 指定到具体的区域。
具体可以查看你使用的IDE对应指定区域的命令与方法。
IAR中也可以直接使用__ramfunc方式去实现。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-19 08:18 , Processed in 0.101119 second(s), 29 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表