主题中讨论的其他器件:TMDSPREX28335、 controlSUITE、 C2000WARE
我正在使用"TMDSPREX28335 C2000外设学习套件"、但自动波特功能不起作用。
您可以进行正常的串行响应、但即使以串行方式发送"A"、也没有响应。
执行所连接光盘的 Lab15_1时出现上述问题。
该软件与提供的"Lab15.c"相匹配。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我正在使用"TMDSPREX28335 C2000外设学习套件"、但自动波特功能不起作用。
您可以进行正常的串行响应、但即使以串行方式发送"A"、也没有响应。
执行所连接光盘的 Lab15_1时出现上述问题。
该软件与提供的"Lab15.c"相匹配。
感谢你的答复。
作为参考、我的代码如下所示。
此代码的目的是使用 SCIboot 启动二进制计数器。
#include "DSP2833x_Device.h"
// Prototype statements for functions found within this file.
extern void InitSysCtrl(void);
extern void InitPieCtrl(void);
extern void InitPieVectTable(void);
extern void InitCpuTimers(void);
extern void ConfigCpuTimer(struct CPUTIMER_VARS *, float, float);
// Prototype statements for functions found within this file.
void Gpio_select(void);
interrupt void cpu_timer0_isr(void);
//###########################################################################
// main code
//###########################################################################
void main(void)
{
int counter=0; // binary counter for digital output
InitSysCtrl(); // Basic Core Initialization
EALLOW;
SysCtrlRegs.WDCR= 0x00AF; // Re-enable the watchdog
EDIS; // 0x00AF to NOT disable the Watchdog, Prescaler = 64
DINT; // Disable all interrupts
Gpio_select(); // GPIO9, GPIO11, GPIO34 and GPIO49 as output
// to 4 LEDs at Peripheral Explorer)
InitPieCtrl(); // basic setup of PIE table; from DSP2833x_PieCtrl.c
InitPieVectTable(); // default ISR's in PIE
EALLOW;
PieVectTable.TINT0 = &cpu_timer0_isr;
EDIS;
InitCpuTimers(); // basic setup CPU Timer0, 1 and 2
ConfigCpuTimer(&CpuTimer0,150,100000);
PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
IER |=1;
EINT;
ERTM;
CpuTimer0Regs.TCR.bit.TSS = 0;
while(1)
{
while(CpuTimer0.InterruptCount < 10)
{
EALLOW;
SysCtrlRegs.WDKEY = 0x55; // service WD #1
EDIS;
}
CpuTimer0.InterruptCount = 0;
counter++;
// if bit 0 of counter = 1, set GPIO9 to 1
if ( counter & 0x00000001 )
{
GpioDataRegs.GPASET.bit.GPIO9 = 1;
}
else
{
GpioDataRegs.GPACLEAR.bit.GPIO9 = 1;
}
// if bit 1 of counter = 1, set GPIO11 to 1
if ( counter & 0x00000002 )
{
GpioDataRegs.GPASET.bit.GPIO11 = 1;
}
else
{
GpioDataRegs.GPACLEAR.bit.GPIO11 = 1;
}
// if bit 2 of counter = 1, set GPIO34 to 1
if ( counter & 0x00000004 )
{
GpioDataRegs.GPBSET.bit.GPIO34 = 1;
}
else
{
GpioDataRegs.GPBCLEAR.bit.GPIO34 = 1;
}
// if bit 3 of counter = 1, set GPIO49 to 1
if ( counter & 0x00000008 )
{
GpioDataRegs.GPBSET.bit.GPIO49 = 1;
}
else
{
GpioDataRegs.GPBCLEAR.bit.GPIO49 = 1;
}
}
}
void Gpio_select(void)
{
EALLOW;
GpioCtrlRegs.GPAMUX1.all = 0; // GPIO15 ... GPIO0 = General Puropse I/O
GpioCtrlRegs.GPAMUX2.all = 0; // GPIO31 ... GPIO16 = General Purpose I/O
GpioCtrlRegs.GPBMUX1.all = 0; // GPIO47 ... GPIO32 = General Purpose I/O
GpioCtrlRegs.GPBMUX2.all = 0; // GPIO63 ... GPIO48 = General Purpose I/O
GpioCtrlRegs.GPCMUX1.all = 0; // GPIO79 ... GPIO64 = General Purpose I/O
GpioCtrlRegs.GPCMUX2.all = 0; // GPIO87 ... GPIO80 = General Purpose I/O
GpioCtrlRegs.GPADIR.all = 0;
GpioCtrlRegs.GPADIR.bit.GPIO9 = 1; // peripheral explorer: LED LD1 at GPIO9
GpioCtrlRegs.GPADIR.bit.GPIO11 = 1; // peripheral explorer: LED LD2 at GPIO11
GpioCtrlRegs.GPBDIR.all = 0; // GPIO63-32 as inputs
GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1; // peripheral explorer: LED LD3 at GPIO34
GpioCtrlRegs.GPBDIR.bit.GPIO49 = 1; // peripheral explorer: LED LD4 at GPIO49
GpioCtrlRegs.GPCDIR.all = 0; // GPIO87-64 as inputs
EDIS;
}
interrupt void cpu_timer0_isr(void)
{
CpuTimer0.InterruptCount++;
EALLOW;
SysCtrlRegs.WDKEY = 0xAA; // service WD #2
EDIS;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}
//===========================================================================
// End of SourceCode.
//===========================================================================
Enomoto、
我想在 J12上使用 TX/RX 时可能会有一些竞争。
原因是 J12上的 TX/RX 来自控制卡的信号"ISO-TX/RX"。 这些是通过控制卡上的隔离器/缓冲器发送的 GPIO28 (SCIARX)/GPIO29 (SCIATX)。 但是、GPIO28/29也会直接转至另一个位置的非缓冲控制卡接头。
在 PREX 电路板上、这些信号的非缓冲版本进入宏"m1"、即 FTDI 串行->USB 器件。 FTDI 被编程为仿真:
1)通过 USB 连接到 PC 的 XDS100v2调试探针
2) USB 转 UART 连接到 GPIO28/29。
因此、当我们插入 USB 进行调试时、我们也启用了该反向通道。 由于此连接已存在、因此没有理由将 J12连接到 PC。 如果我们连接到 J12以及常规 USB、我们可能会从 PC 上双驱动 GPIO28/29。
您能否确认是否将 J12保持未连接状态、如果您可以看到回声器示例工作正常、则只确认与 PC 的 USB 连接?
最棒的
Matthew
您好、Matthew
好的、在这种情况下、我是否需要从当前软件中更改任何 GPIO 设置?
到目前为止、即使 J12未连接、也没有响应。
#include "DSP2833x_Device.h"
// Prototype statements for functions found within this file.
extern void InitSysCtrl(void);
extern void InitPieCtrl(void);
extern void InitPieVectTable(void);
extern void InitCpuTimers(void);
extern void ConfigCpuTimer(struct CPUTIMER_VARS *, float, float);
// Prototype statements for functions found within this file.
void Gpio_select(void);
interrupt void cpu_timer0_isr(void);
//###########################################################################
// main code
//###########################################################################
void main(void)
{
int counter=0; // binary counter for digital output
InitSysCtrl(); // Basic Core Initialization
EALLOW;
SysCtrlRegs.WDCR= 0x00AF; // Re-enable the watchdog
EDIS; // 0x00AF to NOT disable the Watchdog, Prescaler = 64
DINT; // Disable all interrupts
Gpio_select(); // GPIO9, GPIO11, GPIO34 and GPIO49 as output
// to 4 LEDs at Peripheral Explorer)
InitPieCtrl(); // basic setup of PIE table; from DSP2833x_PieCtrl.c
InitPieVectTable(); // default ISR's in PIE
EALLOW;
PieVectTable.TINT0 = &cpu_timer0_isr;
EDIS;
InitCpuTimers(); // basic setup CPU Timer0, 1 and 2
ConfigCpuTimer(&CpuTimer0,150,100000);
PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
IER |=1;
EINT;
ERTM;
CpuTimer0Regs.TCR.bit.TSS = 0;
while(1)
{
while(CpuTimer0.InterruptCount < 10)
{
EALLOW;
SysCtrlRegs.WDKEY = 0x55; // service WD #1
EDIS;
}
CpuTimer0.InterruptCount = 0;
counter++;
// if bit 0 of counter = 1, set GPIO9 to 1
if ( counter & 0x00000001 )
{
GpioDataRegs.GPASET.bit.GPIO9 = 1;
}
else
{
GpioDataRegs.GPACLEAR.bit.GPIO9 = 1;
}
// if bit 1 of counter = 1, set GPIO11 to 1
if ( counter & 0x00000002 )
{
GpioDataRegs.GPASET.bit.GPIO11 = 1;
}
else
{
GpioDataRegs.GPACLEAR.bit.GPIO11 = 1;
}
// if bit 2 of counter = 1, set GPIO34 to 1
if ( counter & 0x00000004 )
{
GpioDataRegs.GPBSET.bit.GPIO34 = 1;
}
else
{
GpioDataRegs.GPBCLEAR.bit.GPIO34 = 1;
}
// if bit 3 of counter = 1, set GPIO49 to 1
if ( counter & 0x00000008 )
{
GpioDataRegs.GPBSET.bit.GPIO49 = 1;
}
else
{
GpioDataRegs.GPBCLEAR.bit.GPIO49 = 1;
}
}
}
void Gpio_select(void)
{
EALLOW;
GpioCtrlRegs.GPAMUX1.all = 0; // GPIO15 ... GPIO0 = General Puropse I/O
GpioCtrlRegs.GPAMUX2.all = 0; // GPIO31 ... GPIO16 = General Purpose I/O
GpioCtrlRegs.GPBMUX1.all = 0; // GPIO47 ... GPIO32 = General Purpose I/O
GpioCtrlRegs.GPBMUX2.all = 0; // GPIO63 ... GPIO48 = General Purpose I/O
GpioCtrlRegs.GPCMUX1.all = 0; // GPIO79 ... GPIO64 = General Purpose I/O
GpioCtrlRegs.GPCMUX2.all = 0; // GPIO87 ... GPIO80 = General Purpose I/O
GpioCtrlRegs.GPADIR.all = 0;
GpioCtrlRegs.GPADIR.bit.GPIO9 = 1; // peripheral explorer: LED LD1 at GPIO9
GpioCtrlRegs.GPADIR.bit.GPIO11 = 1; // peripheral explorer: LED LD2 at GPIO11
GpioCtrlRegs.GPBDIR.all = 0; // GPIO63-32 as inputs
GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1; // peripheral explorer: LED LD3 at GPIO34
GpioCtrlRegs.GPBDIR.bit.GPIO49 = 1; // peripheral explorer: LED LD4 at GPIO49
GpioCtrlRegs.GPCDIR.all = 0; // GPIO87-64 as inputs
EDIS;
}
interrupt void cpu_timer0_isr(void)
{
CpuTimer0.InterruptCount++;
EALLOW;
SysCtrlRegs.WDKEY = 0xAA; // service WD #2
EDIS;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}
//===========================================================================
// End of SourceCode.
//===========================================================================
Enomoto、
您能否从代码中确认您打算将 GPIO9和 GPIO11用作 UART 的 TX/RX? 在这些通道上有一个针对 SCIB 的多路复用器选择。
但是、查看控制卡原理图和 PREX 原理图、我认为 GPIO28/29 (SCIATX/RX)上的 M1宏或 SCI 引脚接头(PREX 上的 J12)
带有 SCIA 的 GPIO28/29是 C2000Ware/controlSUITE 中的自动波特率示例默认使用的内容。
如果您要使用 SCIB (或使用 GPIO 位拆裂来模拟 SCI)、我们需要考虑 GPIO9和 GPIO11。 这些引脚分别作为 ePWM5B/ePWM6B 提供给 J5或 J7。
很抱歉、我的器件在这里造成了混淆、但如果您能弄清楚您希望使用的 GPIO 引脚和 GPIO 模块、我认为这将有助于我了解最终目标。
最棒的
Matthew
您好、Matthew
GPIO9/11被计划用于 LED 照明。 就是这样
"GpioCtrlRegs.GPADIR.bit.GPIO9"和"GpioCtrlRegs.GPADIR.bit.GPIO11"处于输出中置位该位的状态。
我打算使用 GPIO28/29作为 SCIA、但我认为我要实现的目标是由 SCI 引导、因此如果 SCIB 能够实现、SCIB 没有问题。
Enomoto、
感谢您的详细介绍、我现在更清楚地理解了。 对于 SCI 引导、我们仅锁定到 SCIA 中、因此我们将坚持进行调试。
如果您只将唯一的 USB 连接器插入 PREX 板(将用作 XDS100和 UART 与 PC 的连接)、您能否在此处运行 C2000Ware 中的回声卡示例
C:\ti\c2000Ware_3_04_00_00\device_support\F2833x\examples\sci_echoback
这将以9600波特运行、我们应该能够看到字符从 C2000回显到终端。
在调试自动波特引导加载程序之前、我希望确保我们能够与该路径正确通信。
最棒的
Matthew
大家好、Mattew
我尝试运行了 sci_echoback。
由于电路板和 PC 通过端口4上的 USB 进行连接、因此我使用 Hercules 监控端口4、但没有响应。
我尝试使用 CCS 验证操作
我被困在下面的 while 语句循环中。
"Example_2833xSci_Echoback.c"行189
>> while (SciaRegs.scIFF RX.bit.RXFFST! = 1) 
Enomoto、
感谢您提供此图像、PC 仍然看不到 COM 端口。 我认为这是 FTDI 器件编程为 XDS100v1时出现的问题。
我附加了一个 ZIP 文件、其中包含编程器应用"MPROG"以及一个添加 UART 反向通道的新文件。 请摘录并按照以下说明操作:
将 PREX 板插入 PC 并通电
运行 MPROG.exe 应用程序
1)单击"打开文件夹图标"并选择与 MPROG.exe 位于同一控制器中的 F28335_CC_XDS100wUART.EPT
2)点击"Erase all existing devices"按钮
3)单击"Program All Existing device"按钮
4)您应该注意与下图“编程序列号...”相同的对话框。
5)对 PREX 板进行下电上电
-您现在应该在 HW Device Manager、XDS100 Class USB Serial Port (COM##)中检测到 COM 端口

最棒的
Enomoto、
如果序列号不同、这不是问题、这是可以的。 是的、请尝试使用 COM6并查看这是否会通过 UART 进行通信。
如果这不起作用、请查看此帖子、了解对错误驱动程序的潜在修复。 https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/522774/xds100v1-and-xds100v2-driver-problem
最棒的
Matthew
您好、Matthew
我尝试使用 COM6再次发送"A"、但没有响应。
此外、我尝试运行"example_2833xSci_Echoback.c"、但它像以前一样卡在第189行的 while 环路中。
>> while (SciaRegs.scIFF RX.bit.RXFFST! = 1)
我尝试安装建议的522774案例中的驱动程序、但从上述情况来看没有进展。
我有什么问题吗?
此外、如果您有任何应提供的信息、请告知我们。 
很抱歉我花了很多时间。
请帮我更多
Enomoto、
是的、由于某种原因、主机 PC 无法识别 FTDI 器件上的 UART 通道。 我假设这仍然是某些驱动程序问题导致的、但通过 E2E 进行调试可能很困难。
让我们移除 J4并尝试将单引脚接头与 PREX 板底部的 TX/V33/GND/RX 配合使用。 您是否能够将这些 TX/RX/GND 信号手动连接到 PC 上的 DB9接头?
最棒的
Matthew
Enomoto、
如果您向下导航器件树、您应该会找到 F28335、然后是示例文件夹、其中包含 echoback 示例。
另一个想法是、您能否尝试将绿色跳线移动到 DB9上黄色导线的另一侧? 诚然、我经常会混淆信号路由、但我想确保问题不是 C2000 TX 信号(PC RX)不在错误的引脚上。 C2000 RX/PC TX 是中间引脚、因此无法将其转置。
最棒的
Matthew
Enomoto、
我前面讲过其他一些、您能否验证 controlCARD 上的开关 SW1是否"打开" 、显然 SCI Rx 路径有一个额外的使能端。 我们仍需要像在最后几封电子邮件中一样使用4引脚接头。
我们还可以尝试在此 链接的 SCI 通道上引导加载另一个工具、称为 C2PROG。 这将从公式中删除 CCS 或加载回声类型程序。
最棒的
Matthew