吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MT7628/7688 openwrt下啟用串口2 UART2入坑指南

嵌入式加油站 ? 來源:嵌入式加油站 ? 2023-10-30 09:37 ? 次閱讀


前言
【入坑】MT7628/7688有3個串口, UART0,UART1和UART2, 但使用UART2 時碰到一些問題, MT7628/7688的UART2對應的IO口 默認是做網口功能,但未配置或開機狀態,給MT7628/7688的UART2發送數據,會發現發送,MT7628/7688的UART2就會返回什么。剛開始用MT7628/7688的UART2時,我還以為焊板連錫了,檢查板并沒有連錫短路。后來又檢查電路、查MT7628/7688 的手冊、上網查資料,確定UART2電路沒有錯,是軟件末配置好, openwrt源碼里也沒有相應代碼。于是,我們這段歷程寫下來,讓有此問題的小伙伴,少走一些彎路。

MT7628/7688串口簡介

MT7628單網口模式下有3個串口,UART0默認為控制臺使用,UART1和UART2用作和其他設備通信 。
多網口模式下只有兩個串口,UART0默認為控制臺使用,UART1用作和其他設備通信。
串口引腳對應關系表:
UART_RXD0 GPIO#13
UART_TXD0 GPIO#12
UART_RXD1 GPIO#46
UART_TXD1 GPIO#45
UART_RXD2 GPIO#21
UART_TXD2 GPIO#20


MT7628/7688串口2 UART2電路連接原理圖

MT7628/7688串口2 UART2電路連接原理圖,默認是網口功能,用網口功能時就不能用串口功能。

905da5a0-7566-11ee-939d-92fbcf53809c.png

9085cf26-7566-11ee-939d-92fbcf53809c.png

DTS文件

首先確保系統中啟動/dev/ttyS2,先查看修改dts文件。

1)確保 ./target/linux/ramips/dts/mt7628an.dtsi中有如下代碼

  uart2: uart2@e00 {


                        compatible = "ns16550a";






                        reg = <0xe00 0x100>;


                        reg-shift = <2>;


                        reg-io-width = <4>;


                        no-loopback-test;


                        clock-frequency = <40000000>;


                        resets = <&rstctrl 20>;


                        reset-names = "uart2";


                        interrupt-parent = <&intc>;






                        interrupts = <22>;


                        pinctrl-names = "default";


                        pinctrl-0 = <&uart2_pins>;


                };

復制代碼


2)在 ./target/linux/ramips/dts/MT7628.dts中添加
MT7628芯片里面有很多管腳是復用,這里我們以“spis”功能為例做介紹如何配置JS76x8開發板的管腳功能復用。
找到DTS文件中的(源碼目錄下)
./target/linux/ramips/dts/MT7628.dts

spis {


                                ralink,group = "spis";


                                ralink,function = "pwm_uart2";


                        };


......


uart2_pins: uart2 {


                        uart2 {


                                        ralink,group = "uart2";


                                //ralink,function = "pwm";


                                ralink,function = "uart2";


};

&uart2 {


        status = "okay";


};

90a29fd4-7566-11ee-939d-92fbcf53809c.png
出MT7628芯片的SPIS管腳默認配置為"pwm_uart2"功能,具體可以配置哪幾種功能是在
./build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7628/linux-3.18.29/arch/mips/ralink/mt7620.c

90c694d4-7566-11ee-939d-92fbcf53809c.png


MT7628/7688串口2 UART2寄存器配置

MT7688/7628分為IoT Device Mode和IoT Gateway Mode,即單網口模式和五網口模式。如要使用UART2,則必須使用單網口模式,需要配置的寄存器如下:
90d852a0-7566-11ee-939d-92fbcf53809c.png

其中EPHY_GPIO_AIO_EN設置成digital pad。

1)修改內核源碼方式


在./build_dir/target-mipsel_24kc_musl/linux-ramips_mt76x8/linux-4.14.132/arch/mips/ralink/mt7620.c中的prom_soc_init函數中添加

u32 cfg;

cfg = __raw_readl(sysc + 0x3c);

cfg |= 0x0f<<17;

__raw_writel(cfg, sysc + 0x3c);

復制代碼

編譯openwrt源碼,請參看:【Openwrt】開發環境搭建 編譯openwrt源碼http://bbs.sunsili.com/thread-175555-1-1.html

2)通過/dev/mem內存映射方式


編譯openwrt時,先開啟/dev/mem支持,make menuconfig

->Global build settings
->Kernel build options
->/dev/mem virtual device support

源碼,每次開機時,執行該程序。

#include 


#include 


#include 


#include 


#include 






typedef enum{


        IOT_DEV_MODE,           //單網口模式


        IOT_GATEWAY_MODE        //五網口模式


}work_mode_7628_t;






int set_7628_work_mode(work_mode_7628_t mode)
{


        int ch;


        int mem_fd = open("/dev/mem", O_RDWR|O_SYNC);


        if(mem_fd == -1)


        {


                perror("open /dev/mem");


                return -1;


        }


        int size = 0x100;


        int *addr = (int *)mmap(NULL, size, PROT_READ|PROT_WRITE, MAP_SHARED, mem_fd, 0x10000000);


        if(addr == MAP_FAILED)


        {


                perror("mmap");


                return -1;


        }






        if(mode == IOT_DEV_MODE)


        {


                *(addr+(0x3c/4)) |= 0x0f<<17;


        }


        else


        {


                *(addr+(0x3c/4)) &= ~(0x0f<<17);


        }






        close(mem_fd);


        munmap(addr, size);


        return 0;


}










int main(int argc, char **argv)
{


        work_mode_7628_t wrkMd = IOT_DEV_MODE;






        if(argc < 2)


        {


                set_7628_work_mode(wrkMd);


        }


        else


        {


                if(!strcmp(argv[1], "--iot-mode"))


                {


                        printf("Set iot_dev_mode

");


                        set_7628_work_mode(IOT_DEV_MODE);


                }


                else if(!strcmp(argv[1], "--gateway-mode"))


                {


                        printf("Set gateway mode

");


                        set_7628_work_mode(IOT_GATEWAY_MODE);


                }


                else


                {


                        printf("Usage: usemode --iot-mode | --gateay-mode

");


                }


        }






        return 0;


}


保存編譯、下載到開發板
具體操作請參閱:
【openwrt應用開發】openwrt交叉編譯自己的應用程序入門

在開發板運行

./usemode --iot-mode


Set iot_dev_mode

設置為iot-dev-mode,如果沒執行權限,需添加執行權限

chmod +x usemode

查看串口2配置

stty -F /dev/ttyS2


speed 9600 baud; line = 0;


intr = ; quit = ; erase = ; kill = ; eof = ; susp = ; rprnt = ; werase = ; lnext = ; flush = ; min = 1; time = 0;


-brkint -icrnl -imaxbel


-opost


-isig -icanon -iexten -echo -echoe


接收數據

cat /dev/ttyS2&

PC連接usb串口線,打開串口調試助手

發送數據

echo -e   "hello ttys2 " > /dev/ttyS2

90eea992-7566-11ee-939d-92fbcf53809c.png

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 原理圖
    +關注

    關注

    1300

    文章

    6358

    瀏覽量

    235163
  • 串口
    +關注

    關注

    14

    文章

    1557

    瀏覽量

    77037
  • OpenWrt
    +關注

    關注

    10

    文章

    130

    瀏覽量

    39449
  • UART2
    +關注

    關注

    0

    文章

    6

    瀏覽量

    2359

原文標題:【openwrt】MT7628/7688 openwrt下啟用串口2 UART2入坑指南

文章出處:【微信號:嵌入式加油站,微信公眾號:嵌入式加油站】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【WRTnode2R試用體驗】MT7688串口1的使用

    `Mt7688在WRTnode2R上引出了2串口即圖中下部的UART1,平時我們一直使用的是UART
    發表于 10-18 15:00

    【WRTnode2R試用體驗】初識WRTnode2R

    。root@openwrt:/#cat /proc/cpuinfo可以看到MT7628AN的字樣。推測MT7628AN和板卡實際使用的MT7688僅有外設上的區別。root@
    發表于 10-21 12:24

    MT7628開發板硬件篇

    接口(192K/24bits)、IIC 通訊接 口、PWM、SPI master/slave。 (13)豐富的 GPIO。資源下載MT7628開發板openwrt入門教程v1.4.1載SYQ-
    發表于 08-18 09:16

    MT7628處理器是什么

    MT7628處理器:MT7628nn/mt7628an 系列產品是新一代2T2R 802.11n Wi-Fi AP / 路由器 (系統單芯片)。 M
    發表于 07-22 06:19

    mt7628處理器

    mt7628處理器:MT7628nn/mt7628an 系列產品是新一代2T2R 802.11n Wi-Fi AP / 路由器 (系統單芯片)。 M
    發表于 07-30 06:23

    MT7628處理器有哪些特點呢

    什么是MT7628處理器呢?MT7628處理器有哪些特點呢?
    發表于 11-09 06:13

    MT7628支持哪幾種操作模式呢

    ,SD-XC, I2S/PCM和多個低速IOs在一個SOC。MT7628支持兩種操作模式——物聯網網關和物聯網設備模式。高性能的USB 2.0允許MT7628為無線IP攝像機添加3G/4GLTE調制解調器支持或H.264 ISP
    發表于 12-20 06:16

    mt7628/mt7688 apcli0 中繼調試記錄

    mt7628option type mt7628option vendor ralinkoption band 2.4Goption channel 11option autoch 2
    發表于 08-25 17:46

    淺析MT7628/7688 SDK編譯中的以及增加wifi驅動

    lzma版本錯誤,再次感謝manfeel!進入source/vendors/Ralink/MT7628,查看Makefile發現這個該死的Makefile調用的居然是系統默認的lzma文件
    發表于 08-26 17:10

    如何在S32G2啟用UART2?

    親愛的,現在我們使用的是 NXP S32G274 平臺。BSP 基于 BSP34 版本。如何在 BSP34 中啟用 UART2?目前在內核DTS中添加了一些配置信息(如下),但是沒有作用(無法讀寫
    發表于 04-03 09:19

    MT7628路由器芯片的數據手冊和電路圖免費下載

    MT7628路由器芯片包括802.11n MAC和基帶、2.4 GHz無線電和FEM、580 mhzmips 24k‘tm“CPU核心、5端口10/100快速以太網交換機。MT7628包含了從單個
    發表于 07-25 08:00 ?60次下載
    <b class='flag-5'>MT7628</b>路由器芯片的數據手冊和電路圖免費下載

    MT7688/MT7628嵌入式無線AP/路由器/中繼/網橋/CPE核心模塊選型參考

    ;有1Wan+4Lan、USB、Uart、GPIO接口!? ? 型號四:TT-AP2S2TR7628-D60? ?這是和TT-AP2S1TR7688-D60硬件完全兼容一致,僅僅是采用MT76
    的頭像 發表于 08-27 21:01 ?1w次閱讀

    MT7628系列嵌入式核心模塊選型參考

    電壓、天線連接方式等,以下是MT7628設計時市場認可的模塊型號,分享給大家,便于集成時綜合評估后選型!型號一:TT-AP2S2TR7628-LGA48      這是
    的頭像 發表于 11-14 13:53 ?6993次閱讀
    <b class='flag-5'>MT7628</b>系列嵌入式核心模塊選型參考

    MT7628 SoC芯片的數據手冊免費下載

    MT7628芯片路由器包括802.11n MAC和基帶、2.4 GHz無線電和FEM、580 MHz MIPS 24K CPU核心、5端口10/100快速以太網交換機。MT7628包括從單個芯片構建
    發表于 03-03 08:00 ?76次下載
    <b class='flag-5'>MT7628</b> SoC芯片的數據手冊免費下載

    MT7628及外圍原理圖詳解

    MT7628及外圍原理圖詳解
    發表于 10-08 12:03 ?99次下載
    犹太人百家乐官网的玩法技巧和规则| 百家乐屏风| 太阳城假日酒店| 澳门百家乐官网指数| 百家乐官网英皇赌场娱乐网规则 | 百家乐猜大小规则| 财神娱乐城怎么样| 娱乐城注册送体验金| 如何赢百家乐官网的玩法技巧和规则| 百家乐庄牌闲牌| 百家乐官网游戏平台排名| 百家乐筹码500| 银河国际| 百家乐官网网页qq| 大发888官网游| 玩百家乐官网的玩法技巧和规则 | 玩百家乐请高手指点| 百家乐官网娱乐城博彩| 百家乐投注哪个信誉好| 齐齐哈尔市| 百家乐技巧-澳门百家乐官方网址| 阿拉尔市| 关于百家乐切入点| 六合彩现场| 百家乐什么叫缆| 银都娱乐| 太阳城百家乐红利| 澳门百家乐官方网站| 百家乐官网游戏网上投注| 网上百家乐游戏玩法| 明升百家乐官网QQ群| 威尼斯人娱乐城澳门赌场| 中国百家乐官网软件| 德州扑克战术与策略分析| 巴宝莉百家乐官网的玩法技巧和规则| 大发888娱乐游戏下载 客户端| 百家乐官网娱乐网代理佣金| 皇家娱乐场| 帝王百家乐全讯网2| 百家乐官网是否违法| 百家乐游戏试|