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

TMS320C6748: TMS320C6748使用UPP发送,却没有数据

Part Number:TMS320C6748

 使用这个芯片与fpga通过uppA进行通信,dsp这把发送数据,fpga接收数据,但是每次都只有时钟信号没有数据。

/*
 * main.c
 */

#include <stdio.h>
#include <c6x.h>

#include "soc_C6748.h"// DSP C6748 外设寄存器
#include "psc.h"// 电源与睡眠控制宏及设备抽象层函数声明
#include "interrupt.h"// DSP C6748 中断相关应用程序接口函数声明及系统事件号定义
#include "uartStdio.h"// 串口标准输入输出终端函数声明
#include "upp.h"// 通用并行端口设备抽象层函数声明
#include "dspcache.h"
// 全局变量
volatile int upp_error_count = 0;
volatile int upp_interrupt_count = 0;
// 使用缓存
#define CacheEnabled1

// 配置
#define upp_line_size(128)
#define upp_line_count(1)
#define upp_frame_size(upp_line_size * upp_line_count)
#define upp_line_offset(upp_line_size)


// 接收 / 发送缓存变量
#pragma DATA_ALIGN(upp_buffer_a, 8)//64位对齐,一个字节8位,8*8=64
unsigned short upp_buffer_a[upp_frame_size];

// 通道参数
uPPDMAConfig transposeParA;

void OmaplFpgauPPSetup(void)
{// 外设使能PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UPP, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);// 引脚复用配置uPPPinMuxSetup(uPP_CHA_16BIT);// uPP复位uPPReset(SOC_UPP_0_REGS);// 数据格式配置uPPDataFmtConfig(SOC_UPP_0_REGS, uPP_CHA, uPP_DataPackingFmt_LJZE | uPP_DataPacking_FULL| uPP_InterfaceWidth_16BIT | uPP_DataRate_SINGLE);// 通道配置uPPChannelConfig(SOC_UPP_0_REGS, uPP_DDRDEMUX_DISABLE | uPP_SDRTXIL_DISABLE | uPP_CHN_ONE| uPP_ALL_TRANSMIT);// 引脚配置uPPPinConfig(SOC_UPP_0_REGS, uPP_CHA, uPP_PIN_ENABLE | uPP_PIN_WAIT | uPP_PIN_START);// 时钟配置// uPPCLK = (CPUCLK / 2) / (2 * (DIV + 1) (DIV = 0, 1, 2, 3 ... 15)// 456MHz 主频下支持的时钟 114MHz、57MHz、38MHz、28.5MHz、22.8MHz ......uPPClkConfig(SOC_UPP_0_REGS, uPP_CHA, 57000000/2, 228000000/2, uPP_PIN_PHASE_NORMAL);// 空闲输出配置uPPIdleValueConfig(SOC_UPP_0_REGS, uPP_CHA, 0xAAAA);// uPP使能uPPEnable(SOC_UPP_0_REGS);
}

void main(void)
{int i,target_int_count = 2;if(CacheEnabled){// 使能缓存CacheEnableMAR((unsigned int)0xC0000000, (unsigned int)0x10000000);//一个地址一个字节CacheEnable(L1PCFG_L1PMODE_32K | L1DCFG_L1DMODE_32K | L2CFG_L2MODE_256K);}// uPP 外设初始化OmaplFpgauPPSetup();// A 通道参数 接收transposeParA.WindowAddress= (unsigned int *)((int)upp_buffer_a);transposeParA.LineCount= upp_line_count;transposeParA.ByteCount= (upp_line_size*sizeof(unsigned short));transposeParA.LineOffsetAddress = (upp_line_offset*sizeof(unsigned short));

while(1)
{upp_error_count = 0;upp_interrupt_count = 0;for (i = 0; i < upp_frame_size; i++){upp_buffer_a[i] = i;}if(CacheEnabled){CacheWB ((unsigned int)upp_buffer_a, sizeof(upp_buffer_a));}// uPP A 通道启动发送uPPDMATransfer(SOC_UPP_0_REGS, uPP_DMA_CHI, &transposeParA);// 等待 uPP 传输完毕while (upp_interrupt_count < target_int_count && upp_error_count == 0){}}
}


 这个000e是我uppA在nand flash状态下的值

Shine:

 请先看一下c6748的UPP和FPGA的upp digital loopback自循环模式是否都可以?

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6748: TMS320C6748使用UPP发送,却没有数据
分享到: 更多 (0)