|
您好,我目前需要利用TL5708开发平台,需要进行如下工作:
1 在DSP代码里实现进行点亮、熄灭LED2,通过查找可知LED2对应的控制引脚为GPIO5_4,在原理图中对应C14/MCASP1_AXR2/MCASP6_AXR2/UART6_CTSN/GPIO5_4引脚,经过查阅资料可知CTRL_CORE_PAD_MCASP1_AXR2的寄存器地址为:Address Offset
0x0000 16BC,Physical Address 0x4A00 36BC,且寄存器0x对应gpio5_4,因此如何使用该引脚来控制LED2灯的点亮和熄灭?请贴出实现的代码,感谢
2 在DSP程序实现GPMC读数操作,经过查阅资料可知,GPMC CS0基地址为0x00000000,在代码中定义#define DSP_GPMC_CS0_BASEADDR 0x00000000,然后在任务中实现读功能,代码如下所示,但利用示波器观测CS0和REn均为出现低电平有效信号,请帮忙看一下问题出在哪里谢谢
/*
* ======== main_Dsp1.c ========
*
*/
/* xdctools header files */
#include <xdc/std.h>
#include <xdc/runtime/Diags.h>
#include <xdc/runtime/Error.h>
#include <xdc/runtime/Log.h>
#include <xdc/runtime/System.h>
/* package header files */
#include <ti/ipc/Ipc.h>
#include <ti/sysbios/BIOS.h>
#include <ti/sysbios/knl/Task.h>
/* local header files */
#include "Server.h"
#include "rsc_table.h"
#define DSP_GPMC_CS0_BASEADDR 0x00000000
/* private functions */
static Void smain(UArg arg0, UArg arg1);
/*
* ======== main ========
*/
Int main(Int argc, Char* argv[])
{
Error_Block eb;
Task_Params taskParams;
unsigned int data=0xaaaa;
unsigned int i=1;
Log_print0(Diags_ENTRY, "--> main:");
/* must initialize the error block before using it */
Error_init(&eb);
/* create main thread (interrupts not enabled in main on BIOS) */
Task_Params_init(&taskParams);
taskParams.instance->name = "smain";
taskParams.arg0 = (UArg)argc;
taskParams.arg1 = (UArg)argv;
taskParams.stackSize = 0x1000;
Task_create(smain, &taskParams, &eb);
if (Error_check(&eb)) {
System_abort("main: failed to create application startup thread");
}
/* (*(volatile unsigned int *)DSP_GPMC_CS0_BASEADDR) = data;
for(i=1;i<1024*1024*16;i++)
{
(*(volatile unsigned int *)(DSP_GPMC_CS0_BASEADDR+i)) = i%65536;
}*/
/* start scheduler, this never returns */
BIOS_start();
/* should never get here */
Log_print0(Diags_EXIT, "<-- main:");
return (0);
}
/*
* ======== smain ========
*/
Void smain(UArg arg0, UArg arg1)
{
Int status = 0;
Error_Block eb;
Bool running = TRUE;
static unsigned int i = 0;
static unsigned short int data = 0;
Log_print0(Diags_ENTRY | Diags_INFO, "--> smain:");
Error_init(&eb);
/* initialize modules */
Server_init();
/* turn on Diags_INFO trace */
Diags_setMask("Server+F");
/* loop forever */
while (running) {
/* BEGIN server phase */
/* server setup phase */
status = Server_create();
if(i<65536)
{
data = (*(volatile unsigned int *)(DSP_GPMC_CS0_BASEADDR+i)) ;
i++;
}
else
{
i = 0;
}
if (status < 0) {
goto leave;
}
/* server execute phase */
status = Server_exec();
if (status < 0) {
goto leave;
}
/* server shutdown phase */
status = Server_delete();
//(*(volatile unsigned int *)DSP_GPMC_CS0_BASEADDR) = data;
if (status < 0) {
goto leave;
}
/* END server phase */
} /* while (running) */
/* finalize modules */
Server_exit();
leave:
Log_print1(Diags_EXIT, "<-- smain: %d", (IArg)status);
return;
}
|
|