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.

[参考译文] TMS320F28379D:在同一 MCU 将数据从 scia 传输到 scib

Guru**** 2024750 points
Other Parts Discussed in Thread: TMS320F28379D
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/835188/tms320f28379d-transmit-data-from-scia-to-scib-at-same-mcu

器件型号:TMS320F28379D
我使用 f28379d、我想将数据从 SCIA 传输到 SCIB、但我得到了垃圾
我使用 c2000_ware 中的 echo 返回示例进行一些编辑

//######################################################################################################################
//
//文件:   example_2837xDSci_Echoback.c
//
//标题:  SCI 回送。
//
//! addtogroup cpu01_example_list
//!

SCI 回送(sci_echoback)


//!
//!  此测试通过 SCI-A 端口接收和回波数据。
//!
//!  PC 应用程序“超级终端”或其它终端
//!  例如"putty"可用于查看来自 SCI 和的数据
//!  以向 SCI 发送信息。  接收到的字符
//!  将被发送回主机。
//!
//!  b 正在运行\b 应用程序
//!  -#配置超级终端或其它终端、如 PuTTy:
//!
//!  对于超级终端、您可以使用随附的超级终端配置
//!  文件 SCI_96.HT。
//!  超级终端中加载此配置
//!    -#打开超级终端
//!    -#转至文件->打开
//!    -#浏览至项目位置和
//!       选择 SCI_96.HT 文件。
//!  -#检查 COM 端口。
//!  当前已为 COM1设置配置文件。
//!  如果不正确,请断开连接(呼叫->断开连接)
//!  打开"File-Properties"对话框并选择正确的 COM 端口。
//!  -#连接超级终端呼叫->呼叫
//!  然后启动2837xD SCI 回送程序执行。
//!  -#该程序将打印一条问候语,然后请您回答
//!  输入一个字符、它将回显到超级终端。
//!
//!  注意:如果无法打开.HT 文件,或者您正在使用
//!  另一个终端、您可以使用以下设置打开 COM 端口
//!  - 找到正确的 COM 端口
//!  - 每秒位数= 9600
//!  - 日期位= 8
//!   -奇偶校验=无
//!   -停止位= 1
//!  - 硬件控制=无
//!
//!  b 监视\b 变量\n
//!  - LoopCount -发送的字符数
//!
//! b 外部连接\n
//!  通过收发器和电缆将 SCI-A 端口连接到 PC。
//!  - GPIO28为 SCI_A-RXD (连接到串行 DB9电缆的引脚3、PC-TX)
//!  - GPIO29为 SCI_A-TXD (通过串行 DB9电缆连接到 PIN2、PC-RX)
//!
//
//######################################################################################################################
//$TI 发行版:F2837xD 支持库 v3.06.00.00 $
//$Release Date:Mon May 27 06:48:24 CDT 2019 $
//版权所有:
//版权所有(C) 2013-2019德州仪器(TI)公司- http://www.ti.com/
//
//以源代码和二进制形式重新分发和使用,有无
//如果满足以下条件,则允许进行修改
//满足:
//
//  重新分发源代码必须保留上述版权
//  注意、此条件列表和以下免责声明。
//
//  二进制形式的重新分发必须复制上述版权
//  注意、中的条件列表和以下免责声明
//  随提供的文档和/或其他材料
//  分布。
//
//  德州仪器公司的名称和的名称都不是
//  其贡献者可用于认可或推广衍生产品
//  未经特定的事先书面许可,从该软件下载。
//
//本软件由版权所有者和作者提供
//“原样”以及任何明示或暗示的保证,包括但不包括
//限于对适销性和适用性的暗示保证
//一个特定的目的是免责的。 在任何情况下、版权均不得
//所有者或贡献者应对任何直接、间接、偶然、
//特殊、典型或必然的损害(包括但不包括)
//仅限于采购替代货物或服务;
//数据或利润;或业务中断)
//责任理论,无论是合同责任、严格责任还是侵权行为
//(包括疏忽或其他)以任何方式因使用而产生
//此软件,即使已被告知可能会发生此类损坏。
//$
//######################################################################################################################
//
//包含的文件
//
#include "F28x_Project.h"
//
//全局
//
uint16环计数;
字符 x=0;
收到 uint16 [100];
//
//函数原型
//
void scia_echoback_init (void);
void scia_fifo_init (void);
void scia_xmit (int a);
void scia_msg (char * msg);
void scia_rec (void);
//
//主函
//
void main (void)

   char *msg;
//
//步骤1. 初始化系统控制:
// PLL、安全装置、启用外设时钟
//此示例函数位于 F2837xD_SYSCTRL.c 文件中。
//
  InitSysCtrl();
//
//步骤2. 初始化 GPIO:
//此示例函数位于 F2837xD_GPIO.c 文件和中
//说明了如何将 GPIO 设置为其默认状态。
//
  InitGpio();
//
//对于这个示例、只初始化针对 SCI-A 端口的引脚。
// GPIO_SetupPinMux ()-设置 GPxMUX1/2和 GPyMUX1/2寄存器位
// GPIO_SetupPinOptions ()-设置 GPIO 的方向和配置
//这些函数可在 F2837xD_GPIO.c 文件中找到。

  GPIO_SetupPinMux (43、GPIO_MUX_CPU1、0xF);
  GPIO_SetupPinOptions (43、GPIO_INPUT、GPIO_PushPull);
  GPIO_SetupPinMux (42、GPIO_MUX_CPU1、0xF);
  GPIO_SetupPinOptions (42、GPIO_output、GPIO_Async);
  GPIO_SetupPinMux   (19、GPIO_MUX_CPU1   、2           );//将引脚18设置为多路复用器位置2作为 UARTA RX
  GPIO_SetupPinOptions (19、GPIO_input      、GPIO_PushPull);//将引脚设置为 RX
  GPIO_SetupPinMux   (18、GPIO_MUX_CPU1   、2           );//将引脚19设置为多路复用器位置2作为 UARTA TX
  GPIO_SetupPinOptions (18、GPIO_output     、GPIO_Async  );//将引脚设置为 TX
//步骤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;
  scia_fifo_init();      //初始化 SCI FIFO
  scia_echoback_init ();  //初始化用于 echoback 的 SCI
  for (;;)
  {
      MSG ="\r\n 输入字符:\0";
      scia_msg (msg);
      //
      //等待 inc 字符
      //
      scia_rec();
  }
//
// scia_echoback_init -测试1、SCIA DLB、8位字、波特率0x000F、
//                      默认,1个停止位,无奇偶校验
//
void scia_echoback_init ()

   //
   //注意:SCIA 外设的时钟被打开
   //在 InitSysCtrl()函数中
   //
   SciaRegs.SCICCR.all = 0x0007;  // 1停止位, 无回路
                                   //无奇偶校验,8个字符位,
                                   //异步模式,空闲线协议
   SciaRegs.SCICTL1.all = 0x0003; //启用 TX、RX、内部 SCICLK、
                                   //禁用 RX ERR、睡眠、TXWAKE
   SciaRegs.SCICTL2.all = 0x0003; //启用 TX、RX 中断
   SciaRegs.SCICTL2.bit.TXINTENA=1;
   SciaRegs.SCICTL2.bit.RXBKINTENA=1;

   //
   // SCIA 为9600波特
   //@LSPCLK = 50MHz (200MHz SYSCLK) HBAUD = 0x02且 LBAUD = 0x8B。
   //@LSPCLK = 30MHz (120MHz SYSCLK) HBAUD = 0x01且 LBAUD = 0x86。
   //
   SciaRegs.SCIHBAUD.ALL = 0x0002;
   SciaRegs.SCILBAUD.ALL = 0x008B;
   SciaRegs.SCICTL1.all = 0x0023; //从复位中撤回 SCI

   //
      //注意:SCIB 外设的时钟被打开
      //在 InitSysCtrl()函数中
      //
      ScibRegs.SCICCR.all = 0x0007;  // 1停止位, 无环回
                                      //无奇偶校验,8个字符位,
                                      //异步模式,空闲线协议
      ScibRegs.SCICTL1.all = 0x0003; //启用 TX、RX、内部 SCICLK、
                                      //禁用 RX ERR、睡眠、TXWAKE
      SCICT2.ALL = 0x0003; //启用 TX、RX 中断
      ScibRegs.SCICTL2.bit.TXINTENA=1;
      ScibRegs.SCICTL2.bit.RXBKINTENA=1;
      //
      // SCIB 为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
//
// scia_xmit -从 SCI 发送一个字符
//
void scia_xmit (int a)

   while (SciaRegs.SCIFFTX.bit.TXFFST!= 0){}
   SciaRegs.SCITXBUF.ALL =A;
//
// scia_msg -通过 SCIA 发送消息
//
void scia_msg (char * msg)

   int i;
   I = 0;
   while (msg[i]!='\0')
   {
       scia_xmit (msg[i]);
       i++;
       中断;
   }
void scia_rec (void)
   while (ScibRegs.SCIFFRX.bit.RXFFST ==0){}//等待空状态
   //
   //获取字符
   //
   Received[x]= ScibRegs.SCIRXBUF.all;
   X++;

//
// scia_fifo_init -初始化 SCI FIFO
//
void scia_fifo_init()

   SciaRegs.SCIFFTX.all = 0xE040; //清除中断标志、重新启用操作、启用增强功能、恢复自动波特的操作
   SciaRegs.SCIFFRX.ALL = 0x2044; //清除中断标志、重新启用操作、中断级别
   SciaRegs.SCIFFCT.all = 0x0;
   SCIFFTX.ALL = 0xE040;
   ScibRegs.SCIFFRX.ALL = 0x2044;
   ScibRegs.SCIFFCT.all = 0x0;
//
//文件结束
//
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    源只包含初始化的 scia。 如果要 将数据从 SCIA 传输到 SCIB、必须初始化 SCIA 和 SCIB、然后通过线缆连接 SCIA-RX、SCIB-TX 和 SCIA-TX、SCIB-TX。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    没有、函数具有 scia 和 scib 初始化函数、并且我已经使用 wire 将 scia (TX)与 scib (Rx)连接在一起

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    那么、你从 scib 中得到了什么消息?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在第一轮中、我发送13U、但我接收到32768

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我解决了这个问题,它在 launchpad 上的引脚位置,但现在我在数据表上只找到了 SCIB 和 SCIC  

    我找不到 SCIA 和 SCID,我能不能找到吗??

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗯、我认为它们连接到 JTAG 电路。

    您可以在此处找到它:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如何在 launchpad 引脚上连接它 ?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ahmed、

    LaunchPad 支持使用 SCI-A 通过使用 GPIO42和 GPIO43的 USB/UART XDS100v2连接进行 PC 通信 -请参阅 LaunchPad 手册。  对于 SCI-A、考虑使用一个替代 GPIO、例如 GPIO8 (SCITXDA -插头 J8、引脚8)和 GPIO 9 (SCIRXDA -插头 J8、引脚7)。  有关其他可能的选项、请参阅数据表。  以下是相关主题:

    https://e2e.ti.com/support/microcontrollers/c2000/f/171/p/800604/2962721

    请注意 GPIO29的使用。

    但愿这对您有所帮助。 如果您的问题得到了解答、请单击绿色的"验证答案"按钮。 谢谢。

    - Ken

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Ken 先生、

    现在我有 SCIA 工作,但 SCIRXDD 和 SCITXDD 引脚怎么样?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ahmed、

    原始 POST 状态表明您希望使用 SCI-B、并且您的代码已使用 GPIO18和 GPIO19。  请参阅 LaunchPad 参考指南中的表5、或参阅先前文章中的表。  我不理解您的问题。  单独测试每个电路 、以确认所有电路都正常工作、然后尝试将它们连接在一起。

    但愿这对您有所帮助。 如果您的问题得到了解答、请单击绿色的"验证答案"按钮。 谢谢。

    - Ken

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ken 先生

    感谢您的帮助、我在 J1 9&10中使用 GPIO (105、104)获取 scidtx 和 Rx 的引脚位置

    我是通过您的帮助获得的  

    谢谢 KEN。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    器件型号:TMS320F28379D

    工具/软件:Code Composer Studio

    我有同样的问题、您可以输入完成代码吗?:)

    谢谢