msm8937之串口dts配置

本文详细介绍了如何在MSM8937平台上配置UART接口,包括使能设置、功能配置以及GPIO配置。具体涉及uart1、uart2、uart5和uart6的详细配置参数,如中断、时钟、GPIO驱动强度和偏置设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

修改1:
msm8937-mtp.dtsi 使能配置

&blsp1_uart1 {//uart1
    status = "ok";
    pinctrl-names = "default";
    pinctrl-0 = <&uart1_console_active>;
};

&blsp1_uart2 {//uart2
    status = "ok";
    pinctrl-names = "default";
    pinctrl-0 = <&uart_console_active>;
};

&blsp2_uart5 {//uart5
    status = "ok";
    pinctrl-names = "default";
    pinctrl-0 = <&uart5_console_active>;
};

&blsp2_uart6 {//uart6
    status = "ok";
    pinctrl-names = "default";
    pinctrl-0 = <&uart6_console_active>;
};
修改2:
msm8937.dtsi 功能配置

    blsp1_uart1: serial@78af000 {//uart1
        compatible = "qcom,msm-lsuart-v14";
        reg = <0x78af000 0x200>;
        interrupts = <0 107 0>;
        status = "disabled";
        clocks = <&clock_gcc clk_gcc_blsp1_uart1_apps_clk>,
        <&clock_gcc clk_gcc_blsp1_ahb_clk>;
        clock-names = "core_clk", "iface_clk";
    };

    blsp1_uart2:serial@78b0000 {//uart2
        compatible = "qcom,msm-lsuart-v14";
        reg = <0x78b0000 0x200>;
        interrupts = <0 108 0>;
        status = "disabled";
        clocks = <&clock_gcc clk_gcc_blsp1_uart2_apps_clk>,
        <&clock_gcc clk_gcc_blsp1_ahb_clk>;
        clock-names = "core_clk", "iface_clk";
    };

    blsp2_uart5:serial@7aef000 {//uart5
        compatible = "qcom,msm-lsuart-v14";
        reg = <0x7aef000 0x200>;
        interrupts = <0 306 0>;
        status = "disabled";
        clocks = <&clock_gcc clk_gcc_blsp2_uart1_apps_clk>,
               <&clock_gcc clk_gcc_blsp2_ahb_clk>;
        clock-names = "core_clk","iface_clk";
    };

    blsp2_uart6:serial@7af0000 {//uart6
        compatible = "qcom,msm-lsuart-v14";
        reg = <0x7af0000 0x200>;
        interrupts = <0 307 0>;
        status = "disabled";
        clocks = <&clock_gcc clk_gcc_blsp2_uart2_apps_clk>,
               <&clock_gcc clk_gcc_blsp2_ahb_clk>;
        clock-names = "core_clk","iface_clk";
    };

修改3:
msm8937-pinctrl.dtsi GPIO配置
        pmx-uart1console {//uart1
            uart1_console_active: uart1_console_active {
                mux {
                    pins = "gpio0","gpio1";
                    function = "blsp_uart1";
                };
                config {
                    pins = "gpio0","gpio1";
                    drive-strength = <2>;
                    bias-disable;
                };
            };
            uart1_console_sleep: uart1_console_sleep {
                mux {
                    pins = "gpio0","gpio1";
                    function = "blsp_uart1";
                };
                config {
                    pins = "gpio0","gpio1";
                    drive-strength = <2>;
                    bias-pull-down;
                };
            };
        };

        pmx-uartconsole {//uart2
            uart_console_active: uart_console_active {
                mux {
                    pins = "gpio4", "gpio5";
                    function = "blsp_uart2";
                };

                config {
                    pins = "gpio4", "gpio5";
                    drive-strength = <2>;
                    bias-disable;
                };
            };

            uart_console_sleep: uart_console_sleep {
                mux {
                    pins = "gpio4", "gpio5";
                    function = "blsp_uart2";
                };

                config {
                    pins = "gpio4", "gpio5";
                    drive-strength = <2>;
                    bias-pull-down;
                };
            };

        };

        pmx-uart5console {//uart5
            uart5_console_active: uart_console_active {
                mux {
                    pins = "gpio16","gpio17";
                    function = "blsp_uart5";
                };

                config {
                    pins = "gpio16","gpio17";
                    drive-strength = <2>;
                    bias-disable;
                };
            };
            uart5_console_sleep: uart5_console_sleep {
                mux {
                    pins = "gpio16","gpio17";
                    function = "blsp_uart5";
                };

                config {
                       pins = "gpio16","gpio17";
                    drive-strength = <2>;
                    bias-disable;
                };
            };

        };

        pmx-uart6console {//uart6
            uart6_console_active: uart_console_active {
                mux {
                    pins = "gpio20","gpio21";
                    function = "blsp_uart6";
                };

                config {
                    pins = "gpio20","gpio21";
                    drive-strength = <2>;
                    bias-disable;
                };
            };
            uart6_console_sleep: uart6_console_sleep {
                mux {
                    pins = "gpio20","gpio21";    
                    function = "blsp_uart6";
                };

                config {
                    pins = "gpio20","gpio21";
                    drive-strength = <2>;
                    bias-disable;
                };
            };
        };


 

<think>好的,用户想了解BAM串口的相关信息或使用方法,特别是关于协议和使用说明,以及数据传输方面的内容。首先,我需要根据提供的引用资料来整理相关信息。 首先,查看引用[4],里面提到了Modbus/BACnet IP网关BAM-361,产品特点包括两个RS485或RS232接口,独立光电隔离,冗余电源等。这可能与BAM串口有关,但需要确认BAM在这里是否指代某个具体产品型号或技术标准。 然后引用[2]和[5]提到了高通平台的串口配置,特别是BLSP(Bus Low-Speed Peripheral)相关的接口,如BLSP2_UART_RFR_N,这可能涉及到BAM(Bus Access Manager)技术。高通的BAM用于管理低速外设的总线访问,可能与DMA传输相关,提升效率。 引用[3]解释了RS-232和RS-485标准,这些是常见的串口通信协议,BAM串口可能基于这些标准实现。需要结合引用[5]中提到的msm_serial_hs.c驱动,说明BAM在高通平台上的应用。 接下来,用户的问题集中在BAM串口协议和使用方法。需要区分两种情况:一种是Modbus网关中的BAM产品,另一种是高通的BAM技术。根据引用[4],BAM-361是网关产品,可能使用Modbus协议,而引用[5]中的BAM是高通的串口驱动技术。 因此,回答需要分开说明两种情况,可能用户混淆了这两者。需要明确用户所指的BAM是产品名称还是技术术语。根据提供的引用,BAM在高通平台中是总线访问管理,用于优化数据传输,而BAM-361是一个网关设备,支持Modbus协议。 接下来,根据引用[5],高通的BAM串口配置涉及设备树设置,使用特定的兼容性标识,如"qcom,msm-hsuart-v14",并配置DMA通道。这可能涉及内核驱动msm_serial_hs.c,说明配置步骤和代码示例。 对于数据传输,需要解释BAM如何通过DMA提高效率,减少CPU负担,适用于高速通信场景,如引用[5]提到的msm_serial_hs.c驱动。 同时,引用[4]提到的BAM-361网关使用RS485/RS232接口,支持Modbus协议,因此需要说明Modbus协议的数据帧结构和通信流程,可能涉及功能码和数据域。 最后,用户可能需要区分这两种情况,因此需要在回答中明确两种可能性,并提供相关的配置和使用方法,引用对应的资料作为支持。同时,生成相关问题来引导用户进一步明确需求或深入学习。</think>### BAM串口协议与数据传输解析 根据描述,"BAM串口"可能涉及两种场景:一种是**高通平台的BAM(Bus Access Manager)技术**,另一种是**Modbus网关设备中的BAM型号(如BAM-361)**[^4][^5]。以下分别说明: --- #### 一、高通平台BAM串口技术 BAM是高通芯片中用于优化低速外设(如UART、SPI)数据传输的模块,通过DMA(直接内存访问)降低CPU负载。 1. **硬件配置** - 设备树中需定义`blsp_dma`属性和DMA通道,例如: ```dts uart@f9925000 { compatible = "qcom,msm-hsuart-v14"; reg = <0xf9925000 0x1000>; interrupts = <0 114 0>; dmas = <&blsp_dma 4>, <&blsp_dma 5>; dma-names = "tx", "rx"; }; ``` - 需配置GPIO复用模式(如BLSP2_UART_RFR_N引脚)[^2]。 2. **数据传输流程** - 发送:CPU将数据写入缓冲区 → BAM通过DMA将数据搬运至UART FIFO → 自动发送。 - 接收:BAM检测到UART数据 → 触发DMA将数据搬运至内存 → 通知CPU处理。 - 优势:减少中断频率,提升吞吐量,适用于高速场景(如日志传输)。 --- #### 二、BAM-361网关的串口通信 BAM-361是支持Modbus协议的网关设备,提供RS485/RS232接口。 1. **协议说明** - **Modbus RTU帧格式**: ``` [设备地址][功能码][数据域][CRC校验] ``` 例如读取寄存器:`01 03 00 00 00 02 C4 0B` - **功能码**:`03`(读寄存器)、`06`(写单个寄存器)等。 2. **使用方法** - **硬件连接**:通过RS485接口连接设备,注意终端电阻和线序匹配[^3]。 - **配置步骤**: 1. 使用BM-123软件设置IP地址和串口参数(波特率、校验位)。 2. 定义Modbus映射表,关联寄存器地址与物理量。 3. 启用冗余电源和光电隔离(防干扰)[^4]。 --- #### 三、关键差异总结 | 特性 | 高通BAM串口 | BAM-361网关 | |---------------------|---------------------------|--------------------------| | **用途** | 芯片级DMA优化 | 工业协议转换 | | **协议** | 基于UART的原始数据传输 | Modbus RTU/TCP | | **典型场景** | 嵌入式系统日志传输 | 工业自动化控制 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值