3808|2

9790

帖子

24

TA的资源

版主

楼主
 

玩TMS320F28379D遇到的坑 [复制链接]

对C2000了解不多,使用起来应该有很多注意的地方

调试之前没做太多准备工作,调试过程中遇到了很多问题

比如第一个问题是无法在代码里创建一个大数组

4个uint16_t的数据如果每个长度设置为1024就会在调试的时候正常,然后复位后就会无法启动

如果长度是512就正常

代码
#pragma DATA_SECTION(adcADataBuffer, "ramgs0");
#pragma DATA_SECTION(adcBDataBuffer, "ramgs1");
#pragma DATA_SECTION(adcCDataBuffer, "ramgs2");
#pragma DATA_SECTION(adcDDataBuffer, "ramgs3");
CMD
RAMGS0      : origin = 0x00C000, length = 0x002000
RAMGS1      : origin = 0x00E000, length = 0x002000
RAMGS2      : origin = 0x010000, length = 0x002000
RAMGS3      : origin = 0x012000, length = 0x002000
RAMGS4      : origin = 0x014000, length = 0x002000
RAMGS5      : origin = 0x016000, length = 0x001000

ramgs0           : > RAMGS0,     PAGE = 1
ramgs1           : > RAMGS1,     PAGE = 1
ramgs2           : > RAMGS2,     PAGE = 1
ramgs3           : > RAMGS3,     PAGE = 1

后来没办法直接使用指针访问这些内存问题好像解决

另一个问题是我在把ADC数据通过字节的方式发送到PC时数据总是错的

后来我先把内存按照uint16_t的位数写入递增数据

然后我把使用uint8_t 的指针读取0x0000E000地址,按照我理解读取的数据应该是00,00,00,01,00,02,00,03

但实际读取到的数据是01,02,03,04

开始的时候我怀疑是指针没弄对,后来发现不是这个问题

然后把CCS查看的格式由16bit改成8bit查看时发现我读取到的数据没错

想到数据手册里的表格,数据的长度是16位的,也就是说每一个地址对应一个16位数据,如果使用int8_t的指针相当于把高8位给丢弃了,所以读到的数据是00,01,02,03,04应该就是这个问题

 

最新回复

最近C2000有探讨会,其实我觉得有啥不懂的,问他们的技术人员比较靠谱   详情 回复 发表于 2020-3-26 23:03
 
点赞 关注
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复
举报

2618

帖子

0

TA的资源

纯净的硅(高级)

沙发
 

谢谢分享,太有用了,会减少好多弯路。

 
 

回复

4854

帖子

3

TA的资源

版主

板凳
 

最近C2000有探讨会,其实我觉得有啥不懂的,问他们的技术人员比较靠谱

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表