0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

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


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

MT7628/7688串口簡介

MT7628單網(wǎng)口模式下有3個(gè)串口,UART0默認(rèn)為控制臺使用,UART1和UART2用作和其他設(shè)備通信
多網(wǎng)口模式下只有兩個(gè)串口,UART0默認(rèn)為控制臺使用,UART1用作和其他設(shè)備通信。
串口引腳對應(yīng)關(guān)系表:
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電路連接原理圖,默認(rèn)是網(wǎng)口功能,用網(wǎng)口功能時(shí)就不能用串口功能。

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

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

DTS文件

首先確保系統(tǒng)中啟動/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>;


                };

復(fù)制代碼


2)在 ./target/linux/ramips/dts/MT7628.dts中添加
MT7628芯片里面有很多管腳是復(fù)用,這里我們以“spis”功能為例做介紹如何配置JS76x8開發(fā)板的管腳功能復(fù)用。
找到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管腳默認(rèn)配置為"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,即單網(wǎng)口模式和五網(wǎng)口模式。如要使用UART2,則必須使用單網(wǎng)口模式,需要配置的寄存器如下:
90d852a0-7566-11ee-939d-92fbcf53809c.png

其中EPHY_GPIO_AIO_EN設(shè)置成digital pad。

1)修改內(nèi)核源碼方式


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

u32 cfg;

cfg = __raw_readl(sysc + 0x3c);

cfg |= 0x0f<<17;

__raw_writel(cfg, sysc + 0x3c);

復(fù)制代碼

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

2)通過/dev/mem內(nèi)存映射方式


編譯openwrt時(shí),先開啟/dev/mem支持,make menuconfig

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

源碼,每次開機(jī)時(shí),執(zhí)行該程序。

#include 


#include 


#include 


#include 


#include 






typedef enum{


        IOT_DEV_MODE,           //單網(wǎng)口模式


        IOT_GATEWAY_MODE        //五網(wǎng)口模式


}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;


}


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

在開發(fā)板運(yùn)行

./usemode --iot-mode


Set iot_dev_mode

設(shè)置為iot-dev-mode,如果沒執(zhí)行權(quán)限,需添加執(zhí)行權(quán)限

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


接收數(shù)據(jù)

cat /dev/ttyS2&

PC連接usb串口線,打開串口調(diào)試助手

發(fā)送數(shù)據(jù)

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

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

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 原理圖
    +關(guān)注

    關(guān)注

    1298

    文章

    6343

    瀏覽量

    234026
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1554

    瀏覽量

    76510
  • OpenWrt
    +關(guān)注

    關(guān)注

    10

    文章

    130

    瀏覽量

    39304
  • UART2
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    2346

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

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

收藏 人收藏

    評論

    相關(guān)推薦

    【W(wǎng)RTnode2R試用體驗(yàn)】MT7688串口1的使用

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

    【W(wǎng)RTnode2R試用體驗(yàn)】初識WRTnode2R

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

    聯(lián)發(fā)科MT7628MT7688數(shù)據(jù)手冊和編程手冊硬件原理圖

    聯(lián)發(fā)科MT7628MT7688數(shù)據(jù)手冊和編程手冊硬件原理圖
    發(fā)表于 06-06 10:41

    MT7628開發(fā)板硬件篇

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

    MT7628處理器是什么

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

    mt7628處理器

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

    MT7628處理器有哪些特點(diǎn)呢

    什么是MT7628處理器呢?MT7628處理器有哪些特點(diǎn)呢?
    發(fā)表于 11-09 06:13

    MT7628支持哪幾種操作模式呢

    ,SD-XC, I2S/PCM和多個(gè)低速IOs在一個(gè)SOC。MT7628支持兩種操作模式——物聯(lián)網(wǎng)網(wǎng)關(guān)和物聯(lián)網(wǎng)設(shè)備模式。高性能的USB 2.0允許MT7628為無線IP攝像機(jī)添加3G/4GLTE調(diào)制解調(diào)器支持或H.264 ISP
    發(fā)表于 12-20 06:16

    mt7628/mt7688 apcli0 中繼調(diào)試記錄

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

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

    lzma版本錯誤,再次感謝manfeel!進(jìn)入source/vendors/Ralink/MT7628,查看Makefile發(fā)現(xiàn)這個(gè)該死的Makefile調(diào)用的居然是系統(tǒng)默認(rèn)的lzma文件
    發(fā)表于 08-26 17:10

    如何在S32G2啟用UART2?

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

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

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

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

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

    MT7628 SoC芯片的數(shù)據(jù)手冊免費(fèi)下載

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

    MT7628及外圍原理圖詳解

    MT7628及外圍原理圖詳解
    發(fā)表于 10-08 12:03 ?94次下載