请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMDSLCDK6748 工具/软件:TI-RTOS
我正在 电路板上运行 upp_BIOS_drv_v10的环回测试。 测试工作正常。 但是、当我尝试在循环中对其进行测试时、第二次发生 buf 不匹配。
然后我多次重新运行应用程序。 首次测试始终正常。 第二次、某些 buf 被0填充。 第三次、所有 buf 都填充为0
我不明白为什么。 有人可以帮帮我吗? 提前感谢!
下面是我的演示代码:
静态空 LOCAL_UPP_DEMO (UARg a0、UARg A1)
{
int j = 0;
对于(;j < 3;j++){
upp_UserParams upp_setup;
upp_Transfer upp_xfer_a、upp_xfer_b;
gio_handle upph;
int i、status、target_int_count;
//初始化 uPP 缓冲区
对于(i = 0;i < sizeof (upp_buffer_A)/ 4;i++)
{
//将数据放入发送缓冲区并清除接收缓冲区
if (upp_mode = local_mode_ba_dlb)
{
(((uint32 *) upp_buffer_b)[i]= 0xAA5555;
(((uint32 *) upp_buffer_A)[i]= 0x00000000;
}
其他
{
(((uint32 *) upp_buffer_A)[i]= 0xAA5555;
(((uint32 *) upp_buffer_b)[i]= 0x00000000;
}
}
//指定驱动程序参数
local_upp_config (&upp_setup);
//创建驱动程序句柄
//upph = GIO_create ("/UPP"、IOM_INOUT、&status、&upp_setup、NULL);
Gio_Params gioParams;
/*创建输入 GIO 实例*/
Gio_Params_init (gioParams);
gioParams.chanParams = upp_setup;
gioParams.model = ti_sysbios_io_gio_Model_standard;
upph = GIO_create ("/UPP"、GIO_INOUT、&gioParams、NULL);
if (upph ==空)
{
System_printf ("GIO_create failed");
返回;
}
//程序传输
local_upp_config_xfers (&upp_xfer_a、&upp_xfer_b);
System_printf ("编程 uPP 传输...");
//注:如果处于 DLB 模式、则首先开始读取
开关(upp_mode)
{
case local_mode_ab_dlb:
状态= GIO_Read (upph、&upp_xfer_b、NULL);
status |= GIO_WRITE (upph、&upp_xfer_A、NULL);
中断;
case local_mode_ba_dlb:
状态= GIO_Read (upph、&upp_xfer_A、NULL);
status |= GIO_WRITE (upph、&upp_xfer_b、NULL);
中断;
本地模式_A_transmit 情况:
状态= GIO_WRITE (upph、&upp_xfer_A、NULL);
中断;
案例 LOCAL_MODE_A_Receive:
状态= GIO_Read (upph、&upp_xfer_A、NULL);
中断;
默认值:
//无法识别的模式(不应发生)
状态=-1;
中断;
}
//捕获 GIO_Submit 错误)
如果(状态< 0)
{
System_printf ("编程 uPP 传输时出错。\n");
upp_error_count++;
}
//等待传输完成
target_int_count =(upp_mode = local_mode_ab_dlb ||
upp_mode = local_mode_ba_dlb)? 2:1;
while (upp_interrupt_count < target_int_count && upp_error_count = 0)
asm (" nop");
//检查缓冲区(仅限回送模式)
if (target_int_count = 2 && upp_error_count = 0)
对于(i = 0;i < sizeof (upp_buffer_A);i++)
if (upp_buffer_a[i]!= upp_buffer_b[i])
{
System_printf ("缓冲区中的数据不匹配。\n"\});
upp_error_count++;
}
//报告测试结果
if (upp_error_count)
system_printf ("uPP 传输完成、出现%u 错误。\n"、upp_error_count);
其他
System_printf ("uPP 传输完成!\n"\});
gio_delete (&upph);
}
}
和测试结果:

