0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瑞萨RZ/G2L串口SCI的使用(上)

瑞萨MCU小百科 来源:瑞萨MCU小百科 2024-01-17 12:19 次阅读

RZ/G2L串口简介

瑞萨RZ/G2L的串口简称SCI,全称Serial Communication Interface。

RZ/G2L有两种串口,一种带FIFO叫SCIFA,另一种不带FIFO叫SCIg。

c1539e78-b4ed-11ee-8b88-92fbcf53809c.png

所以,RZ/G2L有5路SCIFA和2路SCIg总共7路的串口。

RZ/G2L串口驱动

包含驱动代码和设备树两部分:

内核中的驱动文件sh-sci.c

该源码文件路径:drivers/tty/serial/sh-sci.c,该驱动代码包含SCIFA和SCIg两种型号的完整驱动代码。

编译内核的时候需进行以下配置

左右滑动查看完整内容

egrep -rin "CONFIG_SERIAL_SH_SCI" .out/.config
2180:CONFIG_SERIAL_SH_SCI=y
2181:CONFIG_SERIAL_SH_SCI_NR_UARTS=18
2182:CONFIG_SERIAL_SH_SCI_CONSOLE=y
2183:CONFIG_SERIAL_SH_SCI_EARLYCON=y
2184:CONFIG_SERIAL_SH_SCI_DMA=y

该配置能够确保sh-sci.c的驱动代码能够被编译包含到Image中。

github上提供的内核源码的defconfig中默认已包含SCI驱动代码的编译。

SCI串口的设备树节点在r9a07g044.dtsi中定义,分别定义了scif0~4, sci0~1共7路。

左右滑动查看完整内容

    scif0: serial@1004b800 {
      compatible = "renesas,scif-r9a07g044";
      reg = <0 0x1004b800 0 0x400>;
      interrupts = ,
             ,
             ,
             ,
             ,
             ;
      interrupt-names = "eri", "rxi", "txi",
            "bri", "dri", "tei";
      clocks = <&cpg CPG_MOD R9A07G044_SCIF0_CLK_PCK>;
      clock-names = "fck";
      dmas = <&dmac 0x4e79>, <&dmac 0x4e7a>;
      dma-names = "tx", "rx";
      power-domains = <&cpg>;
      resets = <&cpg R9A07G044_SCIF0_RST_SYSTEM_N>;
      status = "disabled";
    };


    scif1: serial@1004bc00 {
      compatible = "renesas,scif-r9a07g044";
      reg = <0 0x1004bc00 0 0x400>;
      interrupts = ,
             ,
             ,
             ,
             ,
             ;
      interrupt-names = "eri", "rxi", "txi",
            "bri", "dri", "tei";
      clocks = <&cpg CPG_MOD R9A07G044_SCIF1_CLK_PCK>;
      clock-names = "fck";
      dmas = <&dmac 0x4e7d>, <&dmac 0x4e7e>;
      dma-names = "tx", "rx";
      power-domains = <&cpg>;
      resets = <&cpg R9A07G044_SCIF1_RST_SYSTEM_N>;
      status = "disabled";
    };


    scif2: serial@1004c000 {
      compatible = "renesas,scif-r9a07g044";
      reg = <0 0x1004c000 0 0x400>;
      interrupts = ,
             ,
             ,
             ,
             ,
             ;
      interrupt-names = "eri", "rxi", "txi",
            "bri", "dri", "tei";
      clocks = <&cpg CPG_MOD R9A07G044_SCIF2_CLK_PCK>;
      clock-names = "fck";
      dmas = <&dmac 0x4e81>, <&dmac 0x4e82>;
      dma-names = "tx", "rx";
      power-domains = <&cpg>;
      resets = <&cpg R9A07G044_SCIF2_RST_SYSTEM_N>;
      status = "disabled";
    };


    scif3: serial@1004c400 {
      compatible = "renesas,scif-r9a07g044";
      reg = <0 0x1004c400 0 0x400>;
      interrupts = ,
             ,
             ,
             ,
             ,
             ;
      interrupt-names = "eri", "rxi", "txi",
            "bri", "dri", "tei";
      clocks = <&cpg CPG_MOD R9A07G044_SCIF3_CLK_PCK>;
      clock-names = "fck";
      dmas = <&dmac 0x4e85>, <&dmac 0x4e86>;
      dma-names = "tx", "rx";
      power-domains = <&cpg>;
      resets = <&cpg R9A07G044_SCIF3_RST_SYSTEM_N>;
      status = "disabled";
    };


    scif4: serial@1004c800 {
      compatible = "renesas,scif-r9a07g044";
      reg = <0 0x1004c800 0 0x400>;
      interrupts = ,
             ,
             ,
             ,
             ,
             ;
      interrupt-names = "eri", "rxi", "txi",
            "bri", "dri", "tei";
      clocks = <&cpg CPG_MOD R9A07G044_SCIF4_CLK_PCK>;
      clock-names = "fck";
      dmas = <&dmac 0x4e89>, <&dmac 0x4e8a>;
      dma-names = "tx", "rx";
      power-domains = <&cpg>;
      resets = <&cpg R9A07G044_SCIF4_RST_SYSTEM_N>;
      status = "disabled";
    };


    sci0: serial@1004d000 {
      compatible = "renesas,r9a07g044-sci", "renesas,rz-sci";
      reg = <0 0x1004d000 0 0x400>;
      interrupts = ,
             ,
             ,
             ;
      interrupt-names = "eri", "rxi", "txi", "tei";
      clocks = <&cpg CPG_MOD R9A07G044_SCI0_CLKP>;
      clock-names = "fck";
      power-domains = <&cpg>;
      resets = <&cpg R9A07G044_SCI0_RST>;
      status = "disabled";
    };


    sci1: serial@1004d400 {
      compatible = "renesas,r9a07g044-sci", "renesas,rz-sci";
      reg = <0 0x1004d400 0 0x400>;
      interrupts = ,
             ,
             ,
             ;
      interrupt-names = "eri", "rxi", "txi", "tei";
      clocks = <&cpg CPG_MOD R9A07G044_SCI1_CLKP>;
      clock-names = "fck";
      power-domains = <&cpg>;
      resets = <&cpg R9A07G044_SCI1_RST>;
      status = "disabled";
    };

设备树文件路径

arch/arm64/boot/dts/renesas/r9a07g044.dtsi

根据项目需要,使能需要使用的设备节点,如欲使用SCIFA2:

左右滑动查看完整内容

&scif2 {
 pinctrl-0 = <&scif2_pins>;
 pinctrl-names = "default";
 uart-has-rtscts;
 status = "okay";
};

注意需通过scif2_pins正确处理IO口复用问题。如果不使用DMA需要将设备节点中的dmas和dma-names删除。

编译内核:

左右滑动查看完整内容

export ARCH=arm64
export CROSS_COMPILE=aarch64-none-elf-
export PATH=$PATH:/opt/arm/gcc-arm-10.2-2020.11-x86_64-aarch64-none-elf/bin
make defconfig O=.out && make -j8 O=.out

使用当前编译生成的内核Image和dtb

左右滑动查看完整内容

.out/arch/arm64/boot/Image 
.out/arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dtb

启动板子后就能在系统路径下生成/dev/ttySC2节点。

Linux应用层使用RZ/G2L的串口SCI

RZ/G2L的串口设备节点在Linux应用层遵循POSIX标准,使用方法和PC端的Ubuntu系统并无差别。

RZ/G2L除了支持市面上常用的串口波特率如9600/115200/921600等,实际上除POSIX系统定义的波特率都支持外,RZ/G2L能够支持的最大串口波特率是12.5Mbps,下一篇我们将介绍如何在内核驱动代码中实现RZ/G2L的最大波特率12.5Mbps

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内核
    +关注

    关注

    3

    文章

    1362

    浏览量

    40214
  • 瑞萨
    +关注

    关注

    34

    文章

    22290

    浏览量

    86025
  • 串口
    +关注

    关注

    14

    文章

    1543

    浏览量

    76156
  • SCI
    SCI
    +关注

    关注

    1

    文章

    55

    浏览量

    20096

原文标题:RZ/G2L串口SCI的使用(上)

文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于电子RZ/G2L的FET-G2LD-C核心板和OK-G2LD-C开发板评测

    基于电子RZ/G2L处理器开发的FET-G2LD-C核心板和OK-G2LD-C开发板。
    发表于 05-30 17:24 1154次阅读
    基于<b class='flag-5'>瑞</b><b class='flag-5'>萨</b>电子<b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b>的FET-<b class='flag-5'>G2</b>LD-C核心板和OK-<b class='flag-5'>G2</b>LD-C开发板评测

    RZ/G2L串口SCI的使用(下)

    RZ/G2L的SCIFA异步通讯模式下支持的最高波特率可以达到12.5Mbps,如果异步基础时钟选择16倍波特率,同时关闭波特率发生器的倍频模式下依然可以达到3.125Mbps。如果异步基础时钟选择8倍波特率或者波特率发生器开启倍频模式,最大波特率可以达到6.25Mbps
    的头像 发表于 01-17 12:20 1158次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b><b class='flag-5'>串口</b><b class='flag-5'>SCI</b>的使用(下)

    RZ/G2L高速虚拟串口方案 基于RZ/G2L SMARC开发板的虚拟(Virtual UART)实现方案

    RZ/G2L具有丰富的外设,比如千兆以太网,CANFD以及丰富的UART接口,可以满足工业数据收集处理相关的应用。本文主要介绍基于RZ/
    发表于 11-20 14:41 123次阅读
    <b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b>高速虚拟<b class='flag-5'>串口</b>方案 基于<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b> SMARC开发板的虚拟(Virtual UART)实现方案

    G2L系列 核心板 -RZ/G2L 处理器简介|框架图|功耗|原理图及硬件设计指南

    RZ/G2L在智能工控领域的一款高性能、超高效处理器。RZ/G2L采用Arm Cortex
    发表于 06-21 14:45

    【米尔RZ/G2L开发板-试用体验】开箱

    感谢 感谢电子发烧友论坛、感谢米尔电子,把米尔RZ/G2L开发板试用话动的机会给了我。虽然周五就收到了开发板,但是由于复阳了,为了能及时的完成试用活动,所以今天努力的爬起来完成开箱
    发表于 05-14 19:41

    【米尔RZ/G2L开发板-试用体验】开箱 + 开机

    感谢 感谢电子发烧友论坛、感谢米尔电子,把米尔RZ/G2L开发板试用话动的机会给了我。最近事情比较多,赶在这个空挡时间完成开箱报告。 开箱 第一次拿到米尔电子的试用机会,简约的包装
    发表于 05-18 19:33

    【米尔RZ/G2L开发板-试用体验】米尔RZ/G2L开发板开箱视频

    今天刚刚收到米尔RZ/G2L开发板,拆开包裹后给人的感觉是惊艳,板卡设计真的很棒,来看看视频做个简单了解吧。 更多板卡可以登录官网了解哦。https://www.myi
    发表于 05-22 21:58

    【米尔RZ/G2L开发板-试用体验】米尔RZ/G2L开发板使用SSH登录

    收到的米尔RZ/G2L开发板电测试一下SSH登录方式和其它测试! SSH登录 在使用之前,需要事先连接网络,笔者这里使用的是以太
    发表于 06-11 21:47

    【米尔RZ/G2L开发板-试用体验】认识一下米尔RZ/G2L开发板的核心板

    收到米尔RZ/G2L开发板后一直对米尔旗下开发板的做工感到非常精致,同时也有着很强大的功能,也一直很喜欢米尔系列开发板。 引领工业市场从32位MPU向64位演进 基于
    发表于 07-29 00:21

    G2L系列核心板-RZ/G2L处理器简介

    RZ/G2L在智能工控领域的一款高性能、超高效处理器。RZ/G2L采用Arm Cortex
    发表于 06-09 11:54 914次阅读

    米尔RZ/G2L开发板-初体验

    介绍米尔RZ/G2L开发板
    的头像 发表于 05-15 09:10 965次阅读
    米尔<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b>开发板-初体验

    米尔RZ/G2L开发板 TF卡读写速度测试

    米尔RZ/G2L开发板TF卡读写测试
    的头像 发表于 05-22 09:07 1364次阅读
    米尔<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b>开发板 TF卡读写速度测试

    米尔RZ/G2L开发板 安装交叉编译器

    米尔RZ/G2L开发板安装交叉编译器
    的头像 发表于 05-26 22:05 2053次阅读
    米尔<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b>开发板 安装交叉编译器

    RZ/G2L串口SCI的使用(

    RZ/G2L串口SCI的使用
    的头像 发表于 07-25 08:06 470次阅读
    <b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b><b class='flag-5'>串口</b><b class='flag-5'>SCI</b>的使用(<b class='flag-5'>上</b>)

    RZ/G2L串口SCI的使用(下)

    RZ/G2L串口SCI的使用
    的头像 发表于 08-03 08:06 457次阅读
    <b class='flag-5'>RZ</b>/<b class='flag-5'>G2L</b><b class='flag-5'>串口</b><b class='flag-5'>SCI</b>的使用(下)