本文来源电子发烧友社区,作者:xiaopeng, 帖子地址:https://bbs.elecfans.com/jishu_2287977_1_1.html
中科昊芯DSC2802x系列DSP拥有一个SCI(UART)模块,可以用来作为调试口或者与其它模块进行通讯。
其基本功能如下:
注意,这个sci模块数据位是可配置为1~8bit,并非我们常见的8~9bit数据位。
还具有增强功能:
也就是说硬件可以自动检测波特率,功能还是很强大的。
波特率计算公式:
代码实操:
新建两个文件,sci.c和sci.h
与sci相关的代码全部放在sci.c文件里面,sci.h用于sci相关的函数的声明。
1、sci模块硬件初始化:
复制代码
2、中断方式的数据发送
复制代码
3、字符串的发送
复制代码
4、发送与接收中断函数
复制代码
5、主函数
在上一篇GPIO发布的基础上增加sci功能,实现数据的收发,同时,led和按键功能也正常工作。
复制代码
测试
测试成功
中科昊芯DSC2802x系列DSP拥有一个SCI(UART)模块,可以用来作为调试口或者与其它模块进行通讯。
其基本功能如下:
注意,这个sci模块数据位是可配置为1~8bit,并非我们常见的8~9bit数据位。
还具有增强功能:
也就是说硬件可以自动检测波特率,功能还是很强大的。
波特率计算公式:
代码实操:
新建两个文件,sci.c和sci.h
与sci相关的代码全部放在sci.c文件里面,sci.h用于sci相关的函数的声明。
1、sci模块硬件初始化:
- /******************************************************************
- *函数名:Scia_Config(uint32 baud)
- *参 数: baud,串口波特率
- *返回值:无
- *作 用: SCIA 初始化配置
- ******************************************************************/
- void Scia_Config(uint32 baud)
- {
- uint32 div = 0;
- uint32 divsel = 0;
- uint32 lospcp = 0;
- uint32 lspclk = 0;
- uint16 brr = 0;
- //获取系统时钟的倍频、分频和低速外部时钟的值
- div = SysCtrlRegs.PLLCR.bit.DIV;
- divsel = SysCtrlRegs.PLLSTS.bit.DIVSEL;
- lospcp = SysCtrlRegs.LOSPCP.bit.LSPCLK;
- if (lospcp != 0)
- {
- lospcp = lospcp * 2;
- }
- else
- {
- lospcp = 1;
- }
- /*分频值设置
- divsel为 0时,系统时钟4分频
- divsel为 1时,系统时钟4分频
- divsel为 2时,系统时钟2分频
- divsel为 3时,系统时钟1分频*/
- switch (divsel)
- {
- case 0:
- case 1:
- lspclk = 12000000 * div / 4 / lospcp;
- break;
- case 2:
- lspclk = 12000000 * div / 2 / lospcp;
- break;
- case 3:
- lspclk = 12000000 * div / 1 / lospcp;
- break;
- }
- brr = lspclk / (baud * 8) - 1;
- /*SCI 停止位设置 0:一个停止位 1:两个停止位*/
- SciaRegs.SCICCR.bit.STOPBITS = 0;
- /*SCI 奇偶校验位 0:奇偶校验 1:偶偶校验*/
- SciaRegs.SCICCR.bit.PARITY = 0;
- /*SCI 奇偶校验使能 0:关闭 1:启用*/
- SciaRegs.SCICCR.bit.PARITYENA = 0;
- /*SCI 字符长度 0:1个字长1:2个字长 ... 7:8个字长*/
- SciaRegs.SCICCR.bit.SCICHAR = 7;
- /*使能SCI的发送机和接收机*/
- SciaRegs.SCICTL1.bit.TXENA = 1;
- SciaRegs.SCICTL1.bit.RXENA = 1;
- /*SCI 16位波特率选择寄存器 高8位*/
- SciaRegs.SCIHBAUD = (uint8) ((brr >> 8) & 0xff);
- /*SCI 16位波特率选择寄存器 低8位*/
- SciaRegs.SCILBAUD = (uint8) (brr & 0xff);
- /*SCI 发送中断使能*/
- SciaRegs.SCICTL2.bit.TXINTENA = 1;
- /*SCI 接收中断使能*/
- SciaRegs.SCICTL2.bit.RXBKINTENA = 1;
- /*SCI 指定发送和接收中断处理函数,该寄存器受EALLOW保护*/
- EALLOW;
- PieVectTable.SCIRXINTA = &sciaRxIsr;
- PieVectTable.SCITXINTA = &sciaTxIsr;
- EDIS;
- /*PIE Group 9, SCIRXINTA*/
- PieCtrlRegs.PIEIER9.bit.INTx1 = 1;
- /*PIE Group 9, SCITXINTA*/
- PieCtrlRegs.PIEIER9.bit.INTx2 = 1;
- IER_ENABLE(M_INT9);
- /*SCI 软件复位,重新启动SCI*/
- SciaRegs.SCICTL1.bit.SWRESET = 1;
- }
2、中断方式的数据发送
- /******************************************************************
- *函数名:Scia_Send(uint8 data)
- *参 数: data,准备发送的字节
- *返回值:无
- *作 用: SCIA 发送一个字节
- ******************************************************************/
- void Scia_Send(uint8 data)
- {
- while (SciaRegs.SCICTL2.bit.TXRDY == 0)
- {
- }
- SciaRegs.SCITXBUF = data;
- }
3、字符串的发送
- /******************************************************************
- *函数名:Scia_Print(char *str)
- *参 数: *str,要发送的字符串
- *返回值:无
- *作 用: SCIA 发送一个字符串
- ******************************************************************/
- void Scia_Print(char *str)
- {
- while (*str != '')
- {
- while (SciaRegs.SCICTL2.bit.TXRDY == 0)
- {
- }
- SciaRegs.SCITXBUF = *str++;
- }
- }
4、发送与接收中断函数
- /******************************************************************
- *函数名:sciaTxIsr(void)
- *参 数: 无
- *返回值:无
- *作 用: SCIA中断发送处理
- ******************************************************************/
- INTERRUPT void sciaTxIsr(void)
- {
- /*清除中断标志位*/
- while (SciaRegs.SCICTL2.bit.TXRDY == 0)
- {
- }
- PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;
- }
- /******************************************************************
- *函数名:sciaRxIsr(void)
- *参 数: 无
- *返回值:无
- *作 用: SCIA中断接收处理
- ******************************************************************/
- INTERRUPT void sciaRxIsr(void)
- {
- if (SciaRegs.SCICTL2.bit.TXRDY == 1)
- {
- Scia_Send(SciaRegs.SCIRXBUF.bit.RXDT);
- PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;
- }
- }
5、主函数
在上一篇GPIO发布的基础上增加sci功能,实现数据的收发,同时,led和按键功能也正常工作。
- int main(void)
- {
- uint16_t cnt = 0;
- /*初始化系统控制:PLL,WatchDog,使能外设时钟*/
- InitSysCtrl();
- /*初始化内存控制寄存器,使能内存流水线模式*/
- InitFlash();
- /*初始化串口通信的GPIO口*/
- /*GPIO28: SCIRXDA*/
- /*GPIO29: SCITXDA*/
- InitSciGpio();
- /*关闭中断*/
- DINT;
- /*将PIE控制寄存器初始化为默认状态,该状态禁止所有PIE中断并清除所有标志*/
- InitPieCtrl();
- /*禁止CPU中断并清除所有中断标志*/
- IER = 0x0000;
- IFR = 0x0000;
- /*初始化PIE向量表,为PIE向量表中的所有中断向量配置对应向量的入口地址*/
- InitPieVectTable();
- /*SCI寄存器配置*/
- Scia_Config(9600);
- /*使能外部中断和CPU中断*/
- EINT;
- /*初始化KEY、LED*/
- InitKEY();
- InitLED();
- /*通过SCI发送字符串*/
- Scia_Print("Hello haawking!rn");
- while(1)
- {
- /*按键按下*/
- if(GpioDataRegs.GPADAT.bit.GPIO12 == 0)
- {
- /*D400亮*/
- GpioDataRegs.GPACLEAR.bit.GPIO7 = 1;
- }
- else
- {
- /*松开按键D400灭*/
- GpioDataRegs.GPASET.bit.GPIO7 = 1;
- }
- if(cnt == 500)
- {
- cnt = 0;
- /*D401一直闪烁*/
- GpioDataRegs.GPATOGGLE.bit.GPIO6 = 1;
- }
- else
- {
- cnt++;
- DELAY_US(1000);
- }
- }
- return 0;
- }
测试
测试成功
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
中科昊芯
+关注
关注
5文章
73浏览量
5051 -
开发板试用
+关注
关注
3文章
299浏览量
1911
发布评论请先 登录
相关推荐
【Start_DSC28034PNT湖人开发板免费体验】Start_DSC28034PNT湖人开发板RS232 通信
Start_DSC28034PNT湖人开发板| 官网链接
[start28034湖人开发板_北京中科昊
发表于 09-12 12:34
【Start_DSC28034PNT湖人开发板免费体验】Start_DSC28034PNT湖人开发板上电测试
Start_DSC28034PNT湖人开发板| 官网链接
[start28034湖人开发板_北京中科昊
发表于 09-12 12:09
【Start_DSC28034PNT湖人开发板免费体验】Start_DSC28034PNT湖人开发板开箱视频
| 官网链接
[start28034湖人开发板_北京中科昊芯科技有限公司]
官网图片发布是这样:
实物收到后有些出入:今天为大家介绍以下
发表于 08-23 00:17
【Start_DSC28034PNT湖人开发板免费体验】Start_DSC28034PNT湖人开发板初体验
官网链接
start28034湖人开发板_北京中科昊芯科技有限公司
官网图片发布是这样:
实物收到后有些出入:!
微信图片_2023082
发表于 08-23 00:14
【Start_DSC28034PNT湖人开发板免费体验】开发板使用2
接上文 【Start_DSC28034PNT湖人开发板免费体验】开发板使用1
| # 导入工程选择从下载的demo:H:\\\\武汉芯源CW32饭盒派\\\\
发表于 08-19 10:11
【Start_DSC28034PNT湖人开发板免费体验】中科昊芯Start_DSC28034PNT PWM测试
中科昊芯Start_DSC28034PNT PWM测试
本次测试主要对PWM进行测试,尝试使用DSP的PWM模块完成呼吸灯控制功能。
一、硬件连接
通过原理图可以看出,通过PWM控制呼
发表于 08-05 19:40
【Start_DSC28034PNT湖人开发板免费体验】开发板使用1
提取码:yjyx
| # 导入工程选择从下载的demo:H:\\\\武汉芯源CW32饭盒派\\\\中科昊芯Start_DSC28034PN
发表于 08-04 18:10
【Start_DSC28034PNT湖人开发板免费体验】+开箱+软件
感谢 发烧友学院以及中科昊芯提供产品Start_DSC28034PNT湖人开发板
打开快递封装的外包裹袋,里面有2个盒子。打开后是
发表于 08-04 14:31
【Start_DSC28034PNT湖人开发板免费体验】开发环境搭建
资源下载
总的资源,我放在自己的阿里云盘了,就是下面的三个地方的合集
中科昊芯Start_DSC28034PNT开发板
https://ww
发表于 07-30 16:27
【Start_DSC28034PNT湖人开发板免费体验】(开源)控制机械臂小游戏3
【Start_DSC28034PNT湖人开发板免费体验】定时器控制数字舵机
【Start_DSC28034PNT湖人开发板免费体验】1初识中科
发表于 07-30 14:48
【Start_DSC28034PNT湖人开发板免费体验】1初识中科昊芯
感谢 中科昊芯
感谢 电子发烧友社区
板子非常漂亮!
做工精良。
配套设施完善。
细节到位。
自研软件。
界面优良。
发表于 07-18 00:52
【Start_DSC28034PNT湖人开发板免费体验】中科昊芯Start_DSC28034PNT开箱测试
中科昊芯Start_DSC28034PNT开箱测试一、Haawking-IDE安装与环境搭建1、 在中科
发表于 07-09 23:12
【免费试用】中科昊芯Start_DSC28034PNT开发板免费试用
的HXS320F28034PNT处理器,主频高达120MHz,扩展资源丰富SCI(UART)、SPI、(I2C)、LIN、eCAN。 Start_DSC28034PNT开发板上有4位数
【RISC-V 专题】中科昊芯Start_DSC28034PNT湖人开发板免费试用
Start_DSC28034PNT开发板使用了昊芯HXS320F28034PNT RISC-V DSP芯片,该芯片集成了昊
发表于 05-19 10:50
评论