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.

[参考译文] LAUNCHXL-TMS57004:使用 UART 进行通信

Guru**** 2478875 points
Other Parts Discussed in Thread: HALCOGEN, EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/696831/launchxl-tms57004-communication-using-uart

器件型号:LAUNCHXL-TMS57004
Thread 中讨论的其他器件:HALCOGENEK-TM4C1294XL

尊敬的所有人:

我将 TMS57004用作主器件、将 TM4C1294XL 用作从器件。我正在尝试在两者之间建立 UART 通信。我已将波特率设置为115200Hz、将停止位设置为1。我已启用时钟极性和时钟相位。我已进行以下连接。

主器件:    

PD1-Tx

PD0-Rx

PD2-FSS

PD3 - CLK

从属方:

PQ2-Tx

PQ3-Rx

PQ1-FSS

PQ0- CLK

主器件代码

/**@示例 Example_sci_uart_960.c
*此示例代码配置 SCI 并传输一组字符。
* UART 接收器可用于接收此数据。
* scilin 驱动程序文件应使用解压缩设置生成。
*
*执行:
*将微控制器的 SCI 端口连接到的 COM 端口
*装有 MS Windows 的个人计算机。 配置 MS Windows
* Hytermenal 作为 COM 端口、具有以下端口设置:
*每秒位数:9600、
*数据位:8.
*奇偶校验:无
*停止位:2.
*
*
*
*@b Step @b 1:
*
*创建新项目。
*
*导航:->文件->新建->项目
*
*@image html example_createProject.JPG "图:创建新项目"
*
*@b Step @b 2:
*
*导航:-> TMS570LSxx /RM4x ->启用驱动程序
*
*配置驱动程序代码生成:
*-启用 SCILIN 驱动程序
*-禁用其他
*
*@image html sci_enabledriver.JPG "图:SCI 使能驱动程序"
*
*@b Step @b 3:
*
*配置 SCI:
*
*导航:-> TMS570LSxx /RM4x -> SCI
*
*@image html sci_uart.JPG "图:SCI 全局设置"
*
*
*@image html sci_uart1.JPG "图:SCI 数据格式"
*
*
*@b Step @b 4:
*
*单击生成代码图标。
*导航:->文件->生成代码
*
*@image html generateCode.JPG "图:单击"生成代码"
*
*@b Step @b 5:
*
*将下面的源代码复制到 sys_main.c (或)中,用此文件替换 sys_main.c。
*
*示例文件也可以在示例文件夹中找到:./HALCoGen/examples
*
*@注意 HALCoGen 在 sys_main.c 中生成一个空的主函数、
*
*
*

/*
*版权所有(C) 2009-2015 Texas Instruments Incorporated - www.ti.com
*
*
*以源代码和二进制形式重新分发和使用、有无
*如果满足以下条件、则允许进行修改
符合*:
*
*源代码的重新分发必须保留上述版权
*注意、此条件列表和以下免责声明。
*
*二进制形式的再发行必须复制上述版权
*请注意、中的此条件列表和以下免责声明
*随提供的文档和/或其他材料
*分发。
*
*德州仪器公司的名称和名称均不相同
*其贡献者可用于认可或推广衍生产品
*未经特定的事先书面许可。
*
*本软件由版权所有者和贡献者提供
*"按原样"以及任何明示或暗示的保证、包括但不包括
*仅限于对适销性和适用性的暗示保证
*一项特定目的不予承认。 在任何情况下、版权均不得
*所有者或贡献者应对任何直接、间接、偶然或
*特殊、惩戒性或后果性损害、包括但不包括
*仅限于采购替代货物或服务;丧失使用、
*数据或利润;或任何原因造成的业务中断
*责任理论、无论是合同责任、严格责任还是侵权行为
*包括因使用而以任何方式产生的疏忽或其他原因
*、即使被告知可能会发生此类损坏。
*
*

/*用户代码开始(0)*/
/*用户代码结束*/

/*包含文件*/

#include "sys_common.h"
#include "system.h"

/*用户代码开始(1)*/
#include "sci.h"


#define SIZE1 10.
uint8 text1[TMSIZEE1]={'H'、'E'、'R'、'C'、'U'、'L'、'E'、'S'、'、'、'};
#define SIZE2 18.
uint8 text2[TM'、'I'、'C'、'R'、'O'、'C'、'O'、'N'、'T'、'R'、'O'、'L'、'L'、'E'、'R'、'S'、'、'、'、'、'、'};
#define SIZE3 19.
uint8 text3[T'、'E'、'X'、'A'、'S'、'、'I'、'N'、'T'、'R'、'U'、'M'、'N'、'T'、'N'、'N'、'N'、'N'、'\n'、'、'、'r';}

void sciDisplayText (sciBASE-t * sci、uint8 *文本、uint32长度);
空等待(uint32时间);


#define UART scilinREG
/*用户代码结束*/

/**@fn void main (void)
*@应用程序主函数简介
*
*

/*用户代码开始(2)*/
/*用户代码结束*/


void main (void)

/*用户代码开始(3)*/

sciInit();/*初始化 sci/sci-lin */
/*偶校验,2个停止位*/

while (1)/*持续播放*/

sciDisplayText (UART、&text1[0]、TIZE1);//发送文本代码1
sciDisplayText (UART、&text2[0]、TIZE2);//发送文本代码2
sciDisplayText (UART、&text3[0]、TIZE3);//发送文本代码3 *
等待(200);
};

/*用户代码结束*/

/*用户代码开始(4)*/
void sciDisplayText (sciBASE-t * sci、uint8 *文本、uint32长度)

while (length---)(while (l

while ((UART->FLR & 0x4)== 4);//等待忙*/
sciSendByte (UART、* text++);/*发送文本*/
};


空等待(UINT32时间)

时间--;

/*用户代码结束*/

从器件的代码

 

//
//
// uart_echo.c -从中的 UART 读取数据并向其中写入数据的示例
//中断驱动方式。
//
//版权所有(c) 2013-2016 Texas Instruments Incorporated。 保留所有权利。
//软件许可协议
//
//德州仪器(TI)仅提供和使用此软件
//专门用于 TI 的微控制器产品。 该软件归其所有
// TI 和/或其供应商、受适用版权保护
//法律。 您不能将此软件与"病毒"开源软件结合使用
//软件,以便形成一个更大的程序。
//
//此软件按“原样”提供,且存在所有故障。
//不作任何明示、暗示或法定的保证,包括但
//不限于对适销性和适用性的暗示保证
//此软件的特定用途。 TI 不得以任何方式进行
//情况,对特殊、偶然或从属事件负责
//任何原因造成的损害。
//
//这是 EK-TM4C1294XL 固件包版本2.1.3.156的一部分。
//
//

#include
#include
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "driverlib/debug.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/pin_map.h"
#include "driverlib/rom.h"
#include "driverlib/rom_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/uart.h"

//
//
//! \addtogroup example_list
//!

UART 回波(UART_ECHO)


//!
//! 此示例应用利用 UART 来回显文本。 第一个 UART
//! (连接到评估板上的 USB 调试虚拟串行端口)
//! 将配置为115、200波特、8-n-1模式。 接收到的所有字符
//! UART 被发送回 UART。
//
//

//
//
//系统时钟速率,单位为 Hz。
//
//
uint32_t g_ui32SysClock;

//
//
//驱动程序库遇到错误时调用的错误例程。
//
//
#ifdef 调试
无效
_error__(char * pcFilename、uint32_t ui32Line)


#endif

//
//
// UART 中断处理程序。
//
//
无效
UARTIntHandler (空)

uint32_t ui32Status;

//
//获取中断状态。
//
ui32Status = ROM_UARTIntStatus (UART0_BASE、TRUE);

//
//清除已发出的中断。
//
ROM_UARTIntClear (UART0_BASE、ui32Status);

//
//在接收 FIFO 中有字符时循环。
//
while (ROM_UARTCharsAvail (UART0_BASE))

//
//从 UART 读取下一个字符并将其写回 UART。
//
ROM_UARTCharPutNonBlocking (UART0_BASE、
ROM_UARTCharGetNonBlocking (UART0_BASE);

//
//闪烁 LED 以显示字符传输正在发生。
//
GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_0、GPIO_PIN_0);

//
//延迟1毫秒。 每个 SysCtlDelay 大约为3个时钟。
//
SysCtlDelay (g_ui32SysClock /(1000 * 3));

//
//关闭 LED
//
GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_0、0);

//
//
//向 UART 发送字符串。
//
//
无效
UARTSend (const uint8_t * pui8缓冲器、uint32_t ui32计数)

//
//循环,同时有更多字符要发送。
//
while (ui32Count---)

//
//将下一个字符写入 UART。
//
ROM_UARTCharPutNonBlocking (UART0_BASE、* pui8Buffer++);

//
//
//此示例演示了如何将一串数据发送到 UART。
//
//
内部
main (空)

//
//将时钟设置为直接从频率为120MHz 的晶体运行。
//
G_ui32SysClock = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
SYSCTL_OSC_MAIN |
SYSCTL_USE_PLL |
SYSCTL_CFG_VCO_480)、120000000);
//
//启用用于板载 LED 的 GPIO 端口。
//
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPION);

//
//为 LED (PN0)启用 GPIO 引脚。
//
ROM_GPIOPinTypeGPIOOutput (GPIO_PORTN_BASE、GPIO_PIN_0);

//
//启用此示例使用的外设。
//
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_UART0);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);

//
//启用处理器中断。
//
ROM_IntMasterEnable();

//
//将 GPIO A0和 A1设置为 UART 引脚。
//
GPIOPinConfigure (GPIO_PA0_U0RX);
GPIOPinConfigure (GPIO_PA1_U0TX);
ROM_GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);

//
//将 UART 配置为115、200、8-N-1操作。
//
ROM_UARTConfigSetExpClk (UART0_BASE、g_ui32SysClock、115200、
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));

//
//启用 UART 中断。
//
ROM_IntEnable (INT_UART0);
ROM_UARTIntEnable (UART0_BASE、UART_INT_RX | UART_INT_RT);

//
//提示输入文本。
//
//UARTSend ((uint8_t *)"\033[2JEnter 文本:"、16);

//
//循环通过 UART 永久回显数据。
//
while (1)


 传输完成时、我正在使用中断来启用从机。是否需要除前面提到的连接以外的任何其他连接来启用中断?

 

 


帮助我解决此问题。

此致、

Silpa

 

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

    TMS570器件没有来自 SCI 模块的 FSS 和 CLK 信号。

    我认为这4个信号位于 TM4C 器件中;
    PD1-Tx
    PD0-Rx
    PD2-FSS
    PD3 - CLK