1. 打算用dsp6657学习下,先用串口实验吧。找一下芯片支持库Chip support libraries,路径D:\ti\pdk_C6657_1_1_1_4\packages\ti\csl,新建工程

2. 进入这个目录没找到串口的C库文件?只能去其他工程看下为啥了。确实没有,其他工程用的是这两个初始化的

 platform_uart_init();
platform_uart_set_baudrate();

3. DSP6657有2个串口,支持流控可选

4. 搞定头文件的路径,还有库的路径D:\ti\pdk_C6657_1_1_1_4\packages\ti\platform\evmc6657l\platform_lib\lib\debug\ti.platform.evm6657l.lite.lib,现在很想知道怎么修改成相对路径,写了一个简单的程序,先测试一下

 #include "cslr_uart.h"
//估计导入包之后就可以直接使用包含的路径了
#include "ti/platform/platform.h" //#define PLATFORM_WRITE_IN 1
void delay(int j)
{
int i = ;
while(j--)
{
int i = ;
while(i--);
}
}
void main()
{
int i;
platform_init_flags sFlags;
platform_init_config sConfig;
/* Status of the call to initialize the platform */
Int32 pform_status;
/* Platform Information - we will read it form the Platform Library */
platform_info sPlatformInfo; /*
* You can choose what to initialize on the platform by setting the following
* flags. We will initialize everything.
*/
memset( (void *) &sFlags, , sizeof(platform_init_flags));
memset( (void *) &sConfig, , sizeof(platform_init_config)); sFlags.pll = ;
sFlags.ddr = ;
sFlags.tcsl = ; /* Time stamp counter */
sFlags.phy = ; /* Ethernet */
sFlags.ecc = ; sConfig.pllm = ; pform_status = platform_init(&sFlags, &sConfig);
if (pform_status == Platform_EOK) {
/* Get information about the platform so we can use it in various places */
memset( (void *) &sPlatformInfo, , sizeof(platform_info));
(void) platform_get_info(&sPlatformInfo);
} platform_uart_init();
platform_uart_set_baudrate();
//串口初始化
//打印一段
while()
{ platform_uart_write(0x55);
(void) platform_led(, PLATFORM_LED_ON, (LED_CLASS_E) PLATFORM_USER_LED_CLASS);
delay();
(void) platform_led(, PLATFORM_LED_OFF, (LED_CLASS_E) PLATFORM_USER_LED_CLASS);
delay();
}
}

5. 估计是没有cmd文件,所以load下载程序的时候失败了。不过奇怪的是,其他的6657工程没有CMD文件。C665x DSP 集成了大量的片上存储器。除了 32KB 的 L1 程序和数据高速缓存区,每核配有 1024KB 专用存储器,可配置为可映射 RAM 或缓存。该器件还集成了 1024KB 的多核共享存储器,可以作为一个共享 L2 SRAM或共享的 L3 的 SRAM。所有的 L2 存储器具有检错和纠错能力。这次写到L1空间试一下。如果要触发core1运行,应该还需要在core0运行起来后,由core0向core1写IPC触发。

6. 建立一个CMD文件测试一下

 /*
* Linker command file
*
*/ -c
-heap 0x41000
-stack 0xa000 /* Memory Map 1 - the default */
MEMORY
{
L1PSRAM (RWX) : org = 0x0E00000, len = 0x7FFF
L1DSRAM (RWX) : org = 0x0F00000, len = 0x7FFF L2SRAM (RWX) : org = 0x0800000, len = 0x080000
MSMCSRAM (RWX) : org = 0xc000000, len = 0x100000
DDR3 (RWX) : org = 0x80000000,len = 0x20000000
} SECTIONS
{
.csl_vect > L2SRAM
.text > L2SRAM
GROUP (NEAR_DP)
{
.neardata
.rodata
.bss
} load > L2SRAM
.stack > L2SRAM
.cinit > L2SRAM
.cio > L2SRAM
.const > L2SRAM
.data > L2SRAM
.switch > L2SRAM
.sysmem > L2SRAM
.far > L2SRAM
.testMem > L2SRAM
.fardata > L2SRAM
platform_lib > L2SRAM
}

7. 仿真测试的时候发现LED灯会闪烁,但是串口的数据不对,怀疑是时钟的配置不对

8. 测试的时候以为是CFG文件的问题,就添加了一个CFG文件(添加的时候,CCS会提示是否需要把RTSC添加进工程,我添加了),没什么用处,删掉CFG文件,但是CCS提示RTSC需要一个.cfg文件,看样子还需要把RTSC也删除。搞不定,重新建了个工程,把之前的C文件和CMD文件拷贝进来。

9. 串口波特率不对头,估计是系统时钟配置的问题,那么没办法只能用逻辑分析仪抓包看一下,其实每次是有数据的,因为之前把波特率调低有乱码数据。下图是RS232的波形,每个位是520.5us,用1000000/520.5 = 1923波特率。

10. 看下串口收到的数据,正确了,接下来需要研究下DSP6657的时钟配置函数了。

11. 看下波特率配置函数,时钟源是PLATFORM_UART_INPUT_CLOCK_RATE,不过系统时钟不对头,比较麻烦。

 Platform_STATUS platform_uart_set_baudrate(uint32_t baudrate) {
uint16_t brate;
IFPRINT(platform_write("platform_uart_set_baudrate(baudrate=%d) called \n", baudrate));
brate = ((Uint16) (PLATFORM_UART_INPUT_CLOCK_RATE/(baudrate * )));
UartSetBaudRate(brate);
return Platform_EOK;
}

最新文章

  1. vcpu
  2. [UCSD白板题] Maximize the Value of an Arithmetic Expression
  3. 练习1-12:编写一个程序,以每行一个单词的形式打印其输入(C程序设计语言 第2版)
  4. Entity Famework 的通过IOC注入实现
  5. 【转】本地存储-localStroage/sessionStorage存储
  6. Delphi开发Windows服务程序
  7. effective c++:引用传递与值传递,成员函数与非成员函数
  8. 如果使用的是orm,是否还需要关系索引
  9. 让进程在后台可靠运行的几种方法 nohup,setsid,&,disown,CTRL-z ,screen
  10. SQLSERVER图片查看工具SQL Image Viewer5.5.0.156
  11. java线程之线程通信
  12. UVA11020 Efficient Solutions
  13. python学习—几个简单小程序
  14. JDK 1.8源码阅读 HashMap
  15. 一条命令将windows下多个ts文件合并为一个ts文件
  16. RHCE就该这么搞01
  17. codeforces 768D Jon and Orbs
  18. 21扩展IEnumerable<T>泛型接口自定义LINQ的扩展方法
  19. find bugs设置
  20. HDU 6053 TrickGCD (莫比乌斯函数)

热门文章

  1. 阅读优秀的JAVA模板引擎Beetl的使用说明有感
  2. UVA10820 Send a Table
  3. Codeforces Round #535 (Div. 3) E2. Array and Segments (Hard version) 【区间更新 线段树】
  4. js 获取后台数据分页
  5. CSS兼容性问题总结及解决方法
  6. 使用Redis+java(模仿数据库)实现对象存取和读取
  7. PAT——1010. 一元多项式求导
  8. [转]表单提交:button input submit 的区别
  9. Kubernetes对象模型
  10. DQL-子查询