1480|0

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

C2000LaunchPad的SCI配置 [复制链接]

SCI配置 SCI_Configure.c
/* Includes ------------------------------------------------------------------*/
#include
#include
#include "C2000_it.h"
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#define CBR_110             11E1
#define CBR_300             3E2
#define CBR_600             6E2
#define CBR_1200            12E2
#define CBR_2400            24E2
#define CBR_4800            48E2
#define CBR_9600            96E2
#define CBR_14400           144E2
#define CBR_19200           192E2
#define CBR_38400           384E2
#define CBR_56000           56E3
#define CBR_57600           576E2
#define CBR_115200          1152E2
#define CBR_128000          128E3
#define CBR_256000          256E3

#define CPU_FREQ                     60E6
#define LSPCLK_FREQ                  (CPU_FREQ/4)

#define SCI_BAUD(baud) (LSPCLK_FREQ/(baud*8))-1
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/

/****************************************************************************
* Function Name  : SCI_Configure
* Description    : SCI 引脚和参数配置
* Input          : None
* Output         : None
* Return         : None
******************************************************************************/
void SCI_Configure(void)
{
        EALLOW;

        // GPIO28/SCI_RX,配置成上拉输入,输入限定脉冲周期为3*2=6个时钟周期
        GpioCtrlRegs.GPADIR.bit.GPIO28 = 0;                // 配置为输入
        GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0;                // 使能上拉
        GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 1;    // 配置 GPIO28 为SCI_RX
        GpioCtrlRegs.GPAQSEL2.bit.GPIO28 = 3;   // 限定输入脉冲为6
        // GPIO29/SCI_TX,配置为无上拉输出
        GpioCtrlRegs.GPADIR.bit.GPIO29 = 1;                // 配置为输出
        GpioCtrlRegs.GPAPUD.bit.GPIO29 = 1;                // 禁止上拉
        GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 1;    // 配置 GPIO29 为SCI_TX

        SciaRegs.SCICTL1.bit.SWRESET = 0;                // 复位SCI寄存器
        SciaRegs.SCICTL1.bit.SWRESET = 1;                // 完成复位

        // 配置SCI        8位数据位,1个停止位,无校验,波特率 115200
        SciaRegs.SCICCR.bit.STOPBITS = 0;                // 0:1个停止位        1:两个停止位
        SciaRegs.SCICCR.bit.PARITY = 0;                        // 0:奇校验                1:偶校验
        SciaRegs.SCICCR.bit.PARITYENA = 0;                // 0:禁止校验                1:允许校验
        SciaRegs.SCICCR.bit.SCICHAR = 7;                // 7:数据位8位
        SciaRegs.SCIHBAUD = 0;
        SciaRegs.SCILBAUD = SCI_BAUD(CBR_115200);

        SciaRegs.SCICTL1.bit.RXENA = 1;                        // 0:禁止接收                1:使能接收
        SciaRegs.SCICTL1.bit.TXENA = 1;                        // 0:禁止发送                1:使能发送

        SciaRegs.SCICTL2.bit.RXBKINTENA = 0;        // 0:禁止接收中断        1:允许接收中断
        SciaRegs.SCICTL2.bit.TXINTENA = 0;                // 0:禁止发磅中断        1:允许发送中断

        EDIS;
}

/****************************************************************************
* Function Name  : SCI_SendByte
* Description    : SCI 发送一个字节
* Input          : unsigned char TxByte:待发送的字节
* Output         : None
* Return         : None
******************************************************************************/
void SCI_SendByte(unsigned char TxByte)
{
        while(SciaRegs.SCICTL2.bit.TXRDY != 1);
        SciaRegs.SCITXBUF = TxByte;
}

/****************************************************************************
* Function Name  : SCI_PrintfStringTest
* Description    : SCI 发送一个字符串测试
* Input          : None
* Output         : None
* Return         : None
******************************************************************************/
void SCI_PrintfStringTest(void)
{
        unsigned char retry = 0;
        char buff[] = "\nwww.ccnu.edu.cn";
        for(retry=0; retry!=sizeof(buff); ++retry){
                SCI_SendByte(buff[retry]);
        }
}


 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表