主题中讨论的其他器件: C2000WARE
是否可以将 Launchpad LAUNCHXL-F28379D (即 J1引脚3和4)上的 SCIB TX 和 RX 引脚短接,并检查 RX 引脚是否正在接收通过 TX 引脚传输的串行位。 您能否共享该代码? 此外、如何在连接到运行 Code Composer Studio 的 Launchpad 的 PC 上监控此信息?
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.
是否可以将 Launchpad LAUNCHXL-F28379D (即 J1引脚3和4)上的 SCIB TX 和 RX 引脚短接,并检查 RX 引脚是否正在接收通过 TX 引脚传输的串行位。 您能否共享该代码? 此外、如何在连接到运行 Code Composer Studio 的 Launchpad 的 PC 上监控此信息?
您好!
感谢您的提问。 专家将与您联系、询问任何后续问题。
同时、以下是一些答案:
1.是的、您可以按照 C2000Ware 中的"环回"示例短接引脚并查看结果输出、但使用外部连接而不是内部环回。 但是、如果您更愿意获得更具代表性的测试、则使用"echoback"示例将允许主机 PC 进行完整的往返
在这两个示例中都提供了代码、但没有用于直接短接引脚的现有代码(尽管从我在1中提供的信息可以很容易地执行此操作)。
3.可以、您可以在 CCS 中查看寄存器以查看结果(将能够查看为原始字节)。 如果您使用"echoback"示例、您可以直接看到您键入的字符被器件写回、因此我强烈建议您在尝试死区短路之前使用该示例。
另一个注意事项:"回送"示例实际上正是您所需要的、唯一的区别是我们处理器件内部从 TX 到 RX 的短路。 这对于大多数测试应用来说更安全、因为可以确定短路是否牢固(有时会出现跳线等)、可能会松动并增加另一个误差源。 如果您可以、我建议您首先尝试使用该示例。
此致、
Vince
您好、Vince
感谢您的建议。 我看了 sci_echoback 示例。 我有以下疑问:
Launchpad 的 J1-J8引脚上不存在 GPIO28和 GPIO29。 因此、我不知道如何使用串行 DB9电缆的 PC-TX 和 PC-RX 连接它们。
2.为了处理 SCI_B 回声卡上的代码,如果我进行以下更改,它应该能够处理我们的:
2.1分别将 引脚28和29的所有 GPIO_SetupPinMux ()和 GPIO_SetupPinOptions ()更改为19和18。
2.2将 scia 的所有功能改为 scib。
您好、Alok、
[引用 userid="464283" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/994470/launchxl-f28379d-hardware-loop-test-for-scib-tx-and-rx-pins-on-launchxl-f28379d/3674138 #3674138]1. GPIO28和 GPIO29不存在于 Launchpad 的 J1-J8引脚上。 因此、我不知道如何将它们与串行 DB9电缆的 PC-TX 和 PC-RX 相连。[/QUERP]LaunchPad 为 SCI-B 和 SCI-C 提供 RX/TX 信号 如果您想使用 SCI-B、可以使用 GPIO 19 (RX)和 GPIO 18 (TX)。
[引用 userid="464283" URL"~/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/994470/launchxl-f28379d-hardware-loop-test-for-scib-tx-and-rx-pins-on-launchxl-f28379d/3674138 #3674138"]2.为了处理 SCI_B 回声卡上的代码,如果我进行以下更改,它应该能够处理我们的:
2.1分别将 引脚28和29的所有 GPIO_SetupPinMux ()和 GPIO_SetupPinOptions ()更改为19和18。
2.2将 scia 的所有功能改为 scib。
[/报价]echoback 程序不需要任何额外的硬件、您应该只需更改 GPIO 的引脚多路复用器并使用项目属性中的"_LAUNCHXL_F28379D"预定义。 请参阅此常见问题解答: https://e2e.ti.com/support/microcontrollers/c2000/f/c2000-microcontrollers-forum/817224/faq-compiler-launchxl-f28379d-updating-default-sci-echoback-example-developed-for-control-card-to-work-with-launchpad?ReplyFilter=Answers&ReplySortBy=Answers&ReplySortOrder=Descending
要将 SCI-B 与 DB9电缆配合使用、是的、您需要将 SCIA 更改为 SCIB 配置、更改引脚复用。 另一件事是将 LaunchPad _LAUNCHXL_F28379D 的预定义添加到项目属性中,这一点很重要,这样您的 PLL 设置就可以在 InitSysCtrl()中正确定义。
有关类似信息、请参阅此帖子:
此致、
Marlyn
您好、Marlyn
根据您共享的链接、我能够使用 SCIA 配置执行 sci_echoback。 感谢您的指导。 我使用 PuTTY 监视在 GPIO42和43上交换的字符。 然后、我尝试通过将 TI Launchpad 上的 GPIO19和18短接来使用 SCIB 配置实现相同的配置。
这是我的代码:
//######################################################################################################################
//
//文件:example_2837xDSci_Echoback.c
//
//标题:SCI 回送。
//
//! addtogroup cpu01_example_list
//!
//
//包含的文件
//
#include "F28x_Project.h"
//
//全局
//
uint16环计数;
//
//函数原型
//
void scib_echoback_init (void);
void scib_fifo_init (void);
void scib_xmit (int a);
void scib_msg (char * msg);
//
//主函
//
void main (void)
{
uint16 ReceivedChar;
char *msg;
//
//步骤1. 初始化系统控制:
// PLL、安全装置、启用外设时钟
//此示例函数位于 F2837xD_SYSCTRL.c 文件中。
//
InitSysCtrl();
//
//步骤2. 初始化 GPIO:
//此示例函数位于 F2837xD_GPIO.c 文件和中
//说明了如何将 GPIO 设置为其默认状态。
//
InitGpio();
//
//对于这个示例、只初始化针对 SCI-B 端口的引脚。
// GPIO_SetupPinMux ()-设置 GPxMUX1/2和 GPyMUX1/2寄存器位
// GPIO_SetupPinOptions ()-设置 GPIO 的方向和配置
//这些函数可在 F2837xD_GPIO.c 文件中找到。
//
GPIO_SetupPinMux (19、GPIO_MUX_CPU1、0x2);
GPIO_SetupPinOptions (28、GPIO_INPUT、GPIO_PushPull);
GPIO_SetupPinMux (18、GPIO_MUX_CPU1、0x2);
GPIO_SetupPinOptions (29、GPIO_OUTPUT、GPIO_异 步);
//
//步骤3. 清除所有_interrupts 并初始化 PIE 矢量表:
//禁用 CPU __interrupts
//
Dint;
//
//将 PIE 控制寄存器初始化为默认状态。
//默认状态为禁用所有 PIE __interrupts 和标志
//被清除。
//此函数位于 F2837xD_PIECTRL.c 文件中。
//
InitPieCtrl();
//
//禁用 CPU __interrupts 并清除所有 CPU __interrupt 标志:
//
IER = 0x0000;
IFR = 0x0000;
//
//使用指向 shell 中断的指针初始化 PIE 矢量表
//服务例程(ISR)。
//这将填充整个表,即使是__interrupt
//在本例中未使用。 这对于调试很有用。
//可以在 F2837xD_DefaultIsr.c 中找到 shell ISR 例程
//此函数可在 F2837xD_PieVect.c 中找到
//
InitPieVectTable();
//
//步骤4. 用户特定代码:
//
LoopCount = 0;
scib_fifo_init();//初始化 SCI FIFO
scib_echoback_init ();//初始化用于 echoback 的 SCI
MSG ="\r\n\n\nHello World!\0";
scib_msg (msg);
MSG ="\r\n 您将输入一个字符,DSP 将回显它! \n\n";
scib_msg (msg);
for (;;)
{
MSG ="\r\n 输入字符:\0";
scib_msg (msg);
//
//等待 inc 字符
//
while (ScibRegs.SCIFFRX.bit.RXFFST ==0){}//等待空状态
//
//获取字符
//
ReceivedChar = ScibRegs.SCIRXBUF.ALL;
//
//回显字符
//
MSG ="您已发送:\0";
scib_msg (msg);
scib_xmit (ReceivedChar);
LoopCount++;
}
}
//
// scib_echoback_init -测试1、SCIA DLB、8位字、波特率0x000F、
//默认,1个停止位,无奇偶校验
//
void scib_echoback_init ()
{
//
//注意:SCIB 外设的时钟被打开
//在 InitSysCtrl()函数中
//
ScibRegs.SCICCR.all = 0x0007;// 1停止位,无环回
//无奇偶校验,8个字符位,
//异步模式,空闲线协议
ScibRegs.SCICTL1.all = 0x0003;//启用 TX、RX、内部 SCICLK、
//禁用 RX ERR、睡眠、TXWAKE
ScibRegs.SCICTL2.all = 0x0003;
ScibRegs.SCICTL2.bit.TXINTENA=1;
ScibRegs.SCICTL2.bit.RXBKINTENA=1;
//
// SCIA 为9600波特
//@LSPCLK = 50MHz (200MHz SYSCLK) HBAUD = 0x02且 LBAUD = 0x8B。
//@LSPCLK = 30MHz (120MHz SYSCLK) HBAUD = 0x01且 LBAUD = 0x86。
//
ScibRegs.SCIHBAUD.ALL = 0x0002;
ScibRegs.SCILBAUD.ALL = 0x008B;
ScibRegs.SCICTL1.ALL = 0x0023;//从复位中撤回 SCI
}
//
// scib_xmit -从 SCI 发送一个字符
//
空 scib_xmit (int a)
{
while (ScibRegs.SCIFFTX.bit.TXFFST!= 0){}
ScibRegs.SCITXBUF.ALL =A;
}
//
// scib_msg -通过 SCIB 发送消息
//
void scib_msg (char * msg)
{
int i;
I = 0;
while (msg[i]!='\0')
{
scib_xmit (msg[i]);
i++;
}
}
//
// scib_fifo_init -初始化 SCI FIFO
//
void scib_fifo_init()
{
SCIFFTX.ALL = 0xE040;
ScibRegs.SCIFFRX.ALL = 0x2044;
ScibRegs.SCIFFCT.all = 0x0;
}
//
//文件结束
//
这目前不起作用。 执行停留在此 while 循环中:
while (ScibRegs.SCIFFTX.bit.TXFFST!= 0){}
对此有任何建议吗?