TI中文支持网
TI专业的中文技术问题搜集分享网站

求:DSP读写串口程序

大家好,

我打算用PC的串口进行DSP和Matlab之间传递数据,急求DSP读写PC串口的程序,我的板子是EVM6678L,CCS是v5.0.3版本。

非常感谢!

noaming:

BIOS-MCSDK-02-00-05-17\mcsdk_2_00_05_17\tools\post\evmc6678l这个例子,就是C6678通过串口向PC发送信息。

Melody Chen:

补充一下,Titan提供的例子是MSCDK的POST工具例程,POST是“上电自检程序”,详细解释在此:processors.wiki.ti.com/…/BIOS_MCSDK_2.0_User_Guide

POST主要是实现对板上的外设做一些简单的测试看是否运行正常,比如进行“External memory read/write test, NAND read test, UART write test, LED test”等,测试完后将测试结果写给UART。

所以可以参考在例程中(主要看src文件夹下的post.c)的post_write_uart函数,此函数既用于测试UART口,又用于将所有测试结果写给UART口。

Yang Lu:

回复 Melody Chen:

Melody您好,

感谢您的回复!我正在看post.c的例程,请问这个例程是不是只能写串口,是否可以读串口的数据呢?因为我的应用需要DSP和Matlab进行数据交换,所以既要写串口也要读串口。

谢谢!

noaming:

回复 Yang Lu:

Melody的描述非常准确。

读串口和写串口的函数都有,都来自MCSDK-02-00-05-17\pdk_C6678_1_0_0_17\packages\ti\platform\evmc6678l\platform_lib的函数库。你可以查看一下。

Yang Lu:

回复 Melody Chen:

Melody您好,

我在测试post的例程,例程可以成功运行并在串口上打印出结果,但是只能打印在USB的串口上,而不打印在RS-232的串口上面。我想通过RS-232的串口与Matlab传递数据,请问该如何设置呢?

谢谢!

noaming:

回复 Yang Lu:

板子上不是配备有一个跳冒,可以来选择USB串口和RS232串口吗?

Yang Lu:

回复 noaming:

Titan您好,

请问我想只用platform_uart_read和platform_uart_write函数该怎么运用?我加了很多头文件等,但是仍然不能把这两个函数单独使用,只有把整个post工程load进去才行,但post里面有很多我不需要的函数。请教一下我需要加载哪些文件才能使用这两个函数呢?

谢谢!

Melody Chen:

回复 Yang Lu:

platform_uart_read和platform_uart_write函数的定义是在需要函数库头文件platform.h里面。

您可以从

includes–>\pdk_C6678_1_0_0_17\packages\ti\platform\evmc6678l\platform_lib —->platform.h —->找到platform_uart_init, platform_uart_write和platform_uart_read

noaming:

回复 Melody Chen:

你好,Melody的说法很准确,其实POST用的就是

pdk_C6678_1_0_0_17\packages\ti\platform\evmc6678l\platform_lib 库,所以你只要把这个库的头文件和库文件加到你的工程路径中,就可以用了。

Yang Lu:

回复 noaming:

Titan您好,

我加了头文件和文件库,现在可以编译通过并运行了,但是我运行写串口程序,串口上只打印出所要写的第一个字母。如下是我的程序:

#include <string.h>

#include "ti\platform\platform.h"

#include "ti\platform\resource_mgr.h"

/* OSAL functions for Platform Library */

uint8_t *Osal_platformMalloc (uint32_t num_bytes, uint32_t alignment)

{

   return malloc(num_bytes);

}

void Osal_platformFree (uint8_t *dataPtr, uint32_t num_bytes)

{

   /* Free up the memory */

   if (dataPtr)

   {

       free(dataPtr);

   }

}

void Osal_platformSpiCsEnter(void)

{

   /* Get the hardware semaphore.

    *

    * Acquire Multi core CPPI synchronization lock

    */

   while ((CSL_semAcquireDirect (PLATFORM_SPI_HW_SEM)) == 0);

   return;

}

void Osal_platformSpiCsExit (void)

{

   /* Release the hardware semaphore

    *

    * Release multi-core lock.

    */

   CSL_semReleaseSemaphore (PLATFORM_SPI_HW_SEM);

   return;

}

int post_write_uart

(

   char*      msg

)

{

   uint32_t i;

   uint32_t msg_len = strlen(msg);

   /* Write the message to the UART */

   for (i = 0; i < msg_len; i++)

   {

       if (platform_uart_write(msg[i]) != Platform_EOK)

       {

           return -1;

       }

   }

   return 0;

}

void main(void)

{

post_write_uart("HELLO");

}

其中OSAL部分我不清楚是什么意思,但是去掉的话不能编译通过。执行上述程序后,串口只打印H,而不是HELLO。请问这是为什么呢?

谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » 求:DSP读写串口程序
分享到: 更多 (0)