TMS570ls3137之串口使用

一.串口输出

1)打开hcg图形配置软件,建立新工程后,选择driver enable选项,选中“Enable SCI2 driver”,如下图1所示:
图一

2)在SCI2 选框中选择“SCI/LIN port”选项,勾选TX-pin 为输出,如下图2所示:
图2
3)以上设置完毕后即可生成代码。
4)在sys_main.c中编写以下代码:

int my_printf(char *fmt,...)
{
    char *p;
    va_list ap;
    //获取第一个实际参数的起始地址
    va_start(ap,fmt);
    //分析fmt指向的字符串
    for(p = fmt;*p;p++)
    {
        if(*p == '%')
        {
            p++;
            switch(*p)
            {
            //整形十进制数
            case 'd':
                printf("%d",va_arg(ap,int));
                、、sciSendByte(scilinREG,va_arg(ap,int));
                break;
            //字符
            case 'c':
                printf("%c",va_arg(ap,int));
                break;
            //字符串
            case 's':
                printf("%s",(char *)va_arg(ap,int));
                break;
            //浮点数
            case 'f':
                printf("%f",va_arg(ap,double));
                break;
            //%
            case '%':
                putchar('%');
                break;

            }

        }
        else{
            //putchar(*p);
            sciSendByte(scilinREG,(*p));
        }
        //sciSendByte(scilinREG,(*p));
    }
    //将ap赋值为NULL
    va_end(ap);
    return 0;
}


/* USER CODE END */

int main(void)
{
/* USER CODE BEGIN (3) */
    sciInit();
    int num = 0;
    //_enable_IRQ();
    while(1)
    {
        my_printf("printf 串口打印成功!!!");
    }
/* USER CODE END */

    return 0;
}

编译生成代码后烧录至开发板,波特率为默认的9600,观察串口打印信息.

注:以上为测试串口输出使用,这里有编写好的串口输出文件,只需修改#define putchar© sciSendByte(scilinREG,c);
串口寄存器地址即可使用,直接调用printf即可实现串口输出。
https://download.csdn.net/download/weixin_42259397/12493360

二.串口中断接收数据

1)打开HCG,在以上的配置的基础上,点击进入VIM Channel 0-31 中勾选串口中断选项,如下图3所示:
图3
2)然后进入串口配置的界面SCI2 ,使能RX中断,配置收发数据格式,如下图4,5所示:
图4
图5

3)完成以上配置后生成代码后,在sys_main.c中代码编写如下:

#include "sys_common.h"

/* USER CODE BEGIN (1) */
#include "sci.h"
/* USER CODE END */

/** @fn void main(void)
*   @brief Application main function
*   @note This function is empty by default.
*
*   This function is called after startup.
*   The user can use this function to implement the application.
*/

/* USER CODE BEGIN (2) */

/* USER CODE END */

int main(void)
{
/* USER CODE BEGIN (3) */
	sciInit();
	_enable_IRQ();
	while(1);
/* USER CODE END */
    return 0;
}

在中断处理的函数中,注释掉其他代码,只保留接收中断进入函数:

    case 11U:
        /* receive */
//   		byte = (uint8)(scilinREG->RD & 0x000000FFU);

//           if (g_sciTransfer_t[1U].rx_length > 0U)
//           {
//               *g_sciTransfer_t[1U].rx_data = byte;
                /*SAFETYMCUSW 567 S MR:17.1,17.4 <APPROVED> "Pointer increment needed" */
//				g_sciTransfer_t[1U].rx_data++;
//                g_sciTransfer_t[1U].rx_length--;
//                if (g_sciTransfer_t[1U].rx_length == 0U)
//                {
                    sciNotification(scilinREG, (uint32)SCI_RX_INT);
//               }
//           }
        break;

在回调函数“void sciNotification(sciBASE_t *sci,uint32_t flags)”中增加以下代码:

void sciNotification(sciBASE_t *sci,uint32_t flags)
{
	unsigned char byte = sci->RD;
	sciSendByte(sci,byte);
}

以上完成后,编译后烧录开发板,打开串口调试助手,通过串口工具发送hello,然后串口打印出“hello”

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 当然可以为您提供有关tms570ls3137的IIC驱动的相关信息。TMS570LS3137是德州仪器(Texas Instruments)公司的一款高性能微控制器,具有丰富的外设接口,其中包括IIC接口(也称为TWI接口)。为了使用TMS570LS3137的IIC接口,您需要编写相应的IIC驱动程序,实现对IIC总线上从设备的读写操作。 IIC驱动程序的编写可以分为以下几个步骤: 1.初始化IIC接口:在使用IIC接口之前,需要对其进行初始化,包括配置IIC接口的时钟、引脚等。 2.发送起始信号:在进行读写操作之前,需要向IIC总线发送起始信号,通知从设备准备好了接收数据。 3.发送从设备地址:在发送起始信号之后,需要向IIC总线发送要读写的从设备地址,告诉从设备需要读写哪个寄存器或哪段数据。 4.发送数据:如果是写操作,需要向从设备发送数据;如果是读操作,需要向从设备发送读命令。 5.结束操作:完成数据读写之后,需要向IIC总线发送停止信号,通知从设备数据传输已经结束。 需要注意的是,具体的驱动程序实现方式可能因不同的应用场景而有所差异,您可以参考TMS570LS3137的数据手册和相关的IIC驱动程序示例进行编写。 希望这些信息对您有所帮助! ### 回答2: TMS570LS3137是德州仪器(Texas Instruments)公司的一款基于ARM Cortex-R4内核的微控制器。它具有许多功能丰富的外设,其中包括一个IIC(Inter-Integrated Circuit)接口,用于与其他设备进行串行通信。 编写TMS570LS3137的IIC驱动程序需要以下步骤: 1. 配置引脚:首先,需要配置两个引脚作为IIC接口的SDA(数据线)和SCL(时钟线)。这可以通过设置引脚功能、复用和方向来完成。确保正确配置这些引脚以实现IIC通信。 2. 初始化IIC:在代码中,需要初始化IIC控制器,设置通信速率、字长等参数。这可以通过配置IIC控制器的寄存器来完成。确保根据实际需求正确设置这些参数。 3. 发送和接收数据:一旦IIC接口被正确初始化,就可以使用驱动程序来发送和接收数据。发送数据时,将数据写入数据寄存器,并设置传输控制位来启动传输。接收数据时,需要等待接收完成并将接收到的数据从接收寄存器中读取出来。确保在发送和接收数据时,按照IIC通信协议来操作。 4. 错误处理:在使用IIC驱动程序时,需要考虑错误处理。例如,如果发生总线冲突或设备没有响应,需要采取适当的措施。这可能包括重试、重置IIC控制器等操作。 综上所述,编写TMS570LS3137的IIC驱动程序需要进行引脚配置、初始化IIC控制器、发送和接收数据以及错误处理。这些步骤可以根据具体的硬件配置和通信需求来实现。同时,德州仪器官方提供了相关的文档和例程,可以作为编写驱动程序的参考和指导。 ### 回答3: TMS570LS3137是德州仪器(TI)公司生产的一款微控制器,具有强大的处理能力和丰富的接口功能。为了实现IIC(Inter-Integrated Circuit)总线的通信功能,需要编写相应的驱动程序。 IIC是一种常用的串行通信协议,用于连接微控制器与外部设备,如传感器、存储器等。下面是一个简单的TMS570LS3137的IIC驱动程序框架: 1. 初始化IIC控制器: 在程序初始化时,需要设置一些寄存器来配置IIC控制器。首先,要设置IIC时钟速率、工作模式和地址模式等。具体的配置取决于所需的通信参数。 2. 使能IIC总线: 调用相应的函数或设置寄存器,使能IIC总线,使其能够工作。 3. 发送起始条件: 在开始通信之前,需要发送起始条件到总线上。这可以通过设置相应的寄存器来实现。 4. 发送或接收数据: 使用相应的函数或寄存器,向IIC总线发送需要传输的数据,或者从总线上接收数据。 5. 等待传输完成: 等待传输操作完成,这可以通过查询相应的寄存器或使用中断方式来实现。 6. 发送停止条件: 在传输完成后,需要发送停止条件到总线上。这可以通过设置相应的寄存器来实现。 7. 关闭IIC总线: 当所有数据传输完成后,需要关闭IIC总线,以便其他设备可以使用。 需要根据具体的应用需求,编写适合自己的函数来实现上述功能。以上是TMS570LS3137的简单IIC驱动程序框架,具体的实现还需要根据具体的硬件接口和通信协议等因素进行调整和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值