芯查查logo
  • 物料选型
  • 数据服务
    1. 新产品
    2. 查替代
    3. 丝印反查
    4. 查品牌
    5. PCN/PDN
    6. 查方案
    7. 查代理
    8. 数据合作
  • SaaS/方案
      SaaS产品
    1. 供应链波动监测预警
    2. 半导体产业链地图
    3. BOM管理
    4. 解决方案
    5. 汽车电子
    6. 政府机构
    7. 数据API
  • 商城
  • 行业资讯
    1. 资讯
    2. 直播
  • 论坛社区
    1. 论坛
    2. 学习
    3. 测评中心
    4. 活动中心
    5. 积分商城
  • 查一下
峰岹科技_FU6832L_V3开发板使用心得(二)-串口调试
原创 精华 发布时间:2024/05/30 20:19
版块:
开发板测评
简介:邵峰开发板的串口调试过程

编译环境:keil 5.39  C51编译器:C51V959

使用工具:自制的USB转TTL工具(DAP-LINK,自带一路TTL串口)

1:邵峰开发板串口介绍:

同其他的单片机一样,FU6832开发板提供了两路串口,并将其引出到开发板的CON4引脚,串口的主要作用就是主控芯片与上位机或其他模块进行串口通讯。数据可以通过全双工或者半双工方式进行传输。其中用户手册上面提供了波特率的配置方法,能产生系统所需要的发送和接收数据的特定频率。该芯片的串口功能与基本的C51内核的单片机有所不同,这里简单介绍一下。

串口1模式0: 该模式的工作模式为单线制半双工。在该模式下 RXD 既为发送数据总线,又为接收数据总线, 收发数据为 10 位,即 1 位启动、8 位数据(UT_DR)、1 位停止,波特率由 UT_BAUD 决定。

串口1模式1:该模式的工作模式为全/半双工。在该模式下 TXD 为发送数据总线,RXD 为接收数据总线,收 发数据为 10 位,即 1 位启动、8 位数据(UT_DR)、1 位停止,波特率由 UT_BAUD 决定。

串口1模式2:该模式的工作模式为单线制半双工。在该模式下 RXD 既为发送数据总线,又为接收数据总线, 收发数据为 11 位,即 1 位启动、9 位数据(UT_DR+ UT_CR[RB8]/ UT_CR[TB8])、1 位停止,波特率由 UT_BAUD 决定。

串口1模式3:该模式的工作模式为全/半双工。在该模式下 TXD 为发送数据总线,RXD 为接收数据总线,收 发数据为 11 位,即 1 位启动、9 位数据(UT_DR+ UT_CR[RB8]/ UT_CR[TB8])、1 位停止,波特 率由 UT_BAUD 决定。

2:软件配置:

{

SetBit(P0_OE, P05);            //设置IO口P05为输出

    SetBit(P0_PU, P05);            //设置IO口P05为输出上拉

    ClrBit(P0_OE, P06);            //设置IO口P06为输入

    SetBit(P0_PU, P06);            //设置IO口P06为输入上拉

    SetBit(PH_SEL, UART1EN);       //使能串口

    UT_MOD1 = 0;

    UT_MOD0 = 1;                   //MODE1:8bit波特率可变UART模式

    SM2 = 0;                       //禁止Mode2和Mode3多机通讯

    REN = 1;                       //使能接收

    ES0 = 0;                       //先关中断

    PI2C_UT11 = 0;                 //中断优先级时最低

    PI2C_UT10 = 0;

    ClrBit(UT_BAUD, UART_2xBAUD);  //倍频使能0-->Disable  1-->Enable

    UT_BAUD = 0x9b;                //波特率=fcpu_clk/((16/(1+UT_BAUD[BAUD_SEL]))*(UT_BAUD+1));

    ES0 = 1;                       //ES0 发送/接受中断使能位

    EA = 1;                        //打开总中断

RB8=0;

}

 

 

/*  

/*串口发送一个字节的函数*/

void put_char(unsigned char c)

{

    UT_DR = c;

}

 

/*串口发送字符串*/

void put_string(unsigned char * str)

{

    while (*str != 0)

    {

        put_char(*str);

        str++;

    }

}

/******主程序*************/

  char i = 0 ;

 

UART1_Init();

// put_char(0xFA) ;

 

// memset(StrTemp,0,64);

// strcpy(StrTemp,"芯查查测评活动---邵峰开发板");

// UartTxdate(StrTemp,strlen(StrTemp));

 

 

put_string("芯查查测评活动---邵峰开发板");

// put_string("FortiorTech FU6832L");

    while (1)

   { 

 

put_string("FortiorTech FU6832L");  

 

delay(5000);

  put_string("Xin cha cha ce ping huo dong");  

 

delay(5000);

   }实际测试:利用串口发送普通字符这里是没有问题的,但是我发现当我想要发送汉字的时候,问题就来了。

 

 

 

 

这里串口发送的数据就不正常了,截至到写开发过程的时候,都没找到为什么在发送字符串的时候,会导致串口发送数据不正常。后来我才发现是我使用keil时候编译是没有发现问题的,但是在查看put_string ();函数时,就会出现乱码的情况,也不明白为什么会这样。

 

 

 

 

测试实物图片:

 

后记:当时调试代码的时候,由于自己忘记清发送中断,导致串口只能发送一个字节出来,后来才想起来在发送和接收时,都需要清除发送和接收的标志位的,大家在使用的时候需要注意下,不要犯同样的错误了,不过通过串口发送汉字出来,还是有问题,也不太清楚问题,我把程序放到附件里面,希望大家能帮忙看下是哪里配置的问题,感谢!!!!!!!!!!!!!

 

 

工程附件
TEST01_uart1.zip
一起学习 开发板测评
2024/05/30 20:19
  • 举报
😁😂😃😄😅😆😉😊😋😌😍😏😒😓😔😖😘😚😜😝😞😠😡😢😣😤😥😨😩😪😫😭😰😱😲😳😵😷😸😹😺😻😼😽😾😿🙀🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎🙏✂✅✈✉✊✋✌✏✒✔✖✨✳✴❄❇❌❎❓❔❕❗❤➕➖➗➡➰🚀🚃🚄🚅🚇🚉🚌🚏🚑🚒🚓🚕🚗🚙🚚🚢🚤🚥🚧🚨🚩🚪🚫🚬🚭🚲🚶🚹🚺🚻🚼🚽🚾🛀Ⓜ🅰🅱🅾🅿🆎🆑🆒🆓🆔🆕
@好友

全部评论

加载中
游客登录通知
已选择 0 人
自定义圈子
移动
发布帖子
发布动态
发布问答
发布者
聪聪哥哥
最新帖子
【开源】基于UC3842芯片的24V3A反激式开关电源【星允派 NEBULA PI】18:使用PWM驱动RGB灯【星允派 NEBULA PI】17:使用消息队列创建工程项目【拆解活动】开源恒温加热台拆解分析5A快速充电宝1.0
热门版块
查看更多
每日打卡
问型号
问技术
问行情
汽车电子工程师论坛
工业电子专区
新手入门指南
专家问答
单片机/MCU论坛
PCB设计

160

收藏

分享

微信扫码
分享给好友

评论