iMX6ULL應(yīng)用筆記接口篇之UART接口

原創(chuàng) 2023-01-07 14:45:00 iMX6ULL
  本文主要適用于飛凌 OKMX6ULL-S 平臺(tái) Linux4.1.15 操作系統(tǒng),其他平臺(tái)也可以參考,但是不同平臺(tái)之間會(huì)存在差異,需客戶自行修改以適應(yīng)自己的使用。  

imxull-C核心板

FETMX6ULL-S核心板點(diǎn)擊查看詳情

iMX6ULL應(yīng)用筆記接口篇主要適用于飛凌 OKMX6ULL-S 平臺(tái) Linux4.1.15 操作系統(tǒng),主要講解iMX6ULL系列產(chǎn)品接口的一些DEMO測(cè)試?yán)蹋酒榻BSPI轉(zhuǎn)CAN模塊講解相關(guān)知識(shí)點(diǎn)。本文使用的思路和方法僅供參考使用,其它arm開(kāi)發(fā)板雖然芯片不同,但思路和方法有很多的共性,希望對(duì)您在板卡的使用中能夠有所幫助,更多ARM開(kāi)發(fā)板相關(guān)資訊,關(guān)注飛凌嵌入式。 如對(duì)本文講解有不明之處,您也可以聯(lián)系飛凌的技術(shù)支持團(tuán)隊(duì)咨詢了解。《iMX6ULL應(yīng)用筆記》點(diǎn)此索取

先了解一下這款開(kāi)發(fā)板

FETMX6ULL-S核心板采用NXP的高性能、超高效、低成本處理器MCIMX6Y2開(kāi)發(fā)設(shè)計(jì),采用先進(jìn)的ARM Cortex-A7內(nèi)核,運(yùn)行速度高達(dá)800MHz。先進(jìn)的電源管理架構(gòu)可以提供更低的功耗。 標(biāo)配8路原生UART 、2路網(wǎng)口、2路CAN-bus總線、2路USB OTG等常用接口;核心板支持工業(yè)級(jí)和商業(yè)及兩種配置:256MB DDR3L/512MB DDR3L,256MB NandFlash/4GB eMMC/8GB eMMC,方便用戶不同的選擇。為了方便用戶二次開(kāi)發(fā)的同時(shí)簡(jiǎn)化用戶設(shè)計(jì),為您的項(xiàng)目評(píng)估提供良好的評(píng)估及設(shè)計(jì)依據(jù),飛凌為核心板提供了開(kāi)發(fā)套件OKMX6ULL-S開(kāi)發(fā)板,配備豐富的功能接口,滿足用戶多樣化需求。

imx6ull開(kāi)發(fā)板

OKMX6ULL-C開(kāi)發(fā)板(點(diǎn)擊查看詳情




一、增加串口
1. 此處以 uart4 配置進(jìn)行說(shuō)明。查看 IMX6ULLRM.pdf 手冊(cè)中 Chapter 4 External Signals and PinMultiplexing 有

其中第一列為接口號(hào),第二列為功能,第三列為可以復(fù)用此功能的引腳名稱(chēng),第四列為引腳的模式。
2、修改對(duì)應(yīng)的設(shè)備樹(shù)文件 arch/arm/boot/dts/imx6ull-14x14-evk.dts,在&uart3 下添加&uart4 節(jié)點(diǎn)。
3、添加 pinctrl_uart4 引腳復(fù)用配置
4、將其它使用這兩個(gè)引腳的地方去掉或者 disabled,在設(shè)備樹(shù)文件下搜索
MX6UL_PAD_UART4_TX_DATA,可以看到 i2c1 使用了這兩個(gè)引腳
所以把 i2c1 給 disabled 掉
5、編譯生成 dtb,替換并燒寫(xiě)。
6、查看開(kāi)發(fā)板/dev 下有生成 ttymxc3 節(jié)點(diǎn),則驅(qū)動(dòng)加載成功。
測(cè)試方法同其它串口的測(cè)試方法。
二、串口去掉 DMA
MX6ULL 源碼中,默認(rèn)除了 debug 串口 uart1 之外,其它的都是默認(rèn)打開(kāi)的 DMA 的,如果串口只是接了 TXD/RXD,而沒(méi)有硬件流控 RTS/CTS,則使用 DMA 傳輸大量數(shù)據(jù)有可能報(bào) DMA 錯(cuò)誤,所以如果只接 TXD/RXD 可以只使用 PIO 模式,可參考 uart1 設(shè)置。

修改 arch\arm\boot\dts\imx6ull.dtsi 文件,以 uart7 為例去掉串口 DMA:屏蔽掉 dmas = <&sdma 43 4 0>, <&sdma 44 4 0>;

三、USB 轉(zhuǎn)串口
出廠鏡像默認(rèn)配置了 PL2303 的驅(qū)動(dòng)啟動(dòng)文件系統(tǒng),插入 usb 轉(zhuǎn)串口,如下:

在 dev 下產(chǎn)生 ttyUSB0 節(jié)點(diǎn)。

另外有些 USB 設(shè)備需要將配置文件中 CONFIG_USB_PRINTER=y,需要注意。
測(cè)試方法同 UART 串口測(cè)試章節(jié)。


四、UART 奇偶校驗(yàn)的方法
驅(qū)動(dòng)中已經(jīng)默認(rèn)支持奇偶校驗(yàn)了,接下來(lái)就是應(yīng)用添加標(biāo)志位來(lái)實(shí)現(xiàn)奇偶校驗(yàn),下面就介紹了應(yīng)用中
如何添加校驗(yàn)位的支持。
我們可以看到應(yīng)用中有包含<termios.h>頭文件。這個(gè)頭文件定義了終端控制結(jié)構(gòu)體和 POSIX 控制函數(shù)。
最重要的就是這個(gè)結(jié)構(gòu)體
struct termios
{
tcflag_t c_iflag; /* 輸入選項(xiàng) */
tcflag_t c_oflag; /* 輸出選項(xiàng) */
tcflag_t c_cflag; /* 控制選項(xiàng) */
tcflag_t c_lflag; /* 行選項(xiàng) */
其中 c_cflag 控制選項(xiàng)包含了波特率、數(shù)據(jù)位、校驗(yàn)位、停止位的設(shè)置。
設(shè)置奇偶效驗(yàn)位需要用到兩個(gè) termios 中的成員:c_cflag 和 c_iflag。首先要激活 c_cflag 中的校驗(yàn)位使
能標(biāo)志 PARENB 和是否進(jìn)行奇偶效驗(yàn),同時(shí)還要激活 c_iflag 中的奇偶效驗(yàn)使能。
首先注釋掉無(wú)校驗(yàn)的標(biāo)志位:
newtio.c_cflag &= ~PARENB;
newtio.c_iflag = IGNPAR;
設(shè)置奇校驗(yàn):
newtio.c_cflag |= PARENB;
newtio.c_iflag |= (INPCK | ISTRIP);
newtio.c_cflag |= PARODD;
設(shè)置偶校驗(yàn):
newtio.c_cflag |= PARENB;
newtio.c_iflag |= (INPCK | ISTRIP);
newtio.c_cflag &= ~PARODD;
重新編譯生成應(yīng)用程序。
即可對(duì)收發(fā)數(shù)據(jù)進(jìn)行校驗(yàn)。











相關(guān)產(chǎn)品 >

  • OKMX6ULL-S開(kāi)發(fā)板

    iMX6ULL是飛凌新近推出的一款開(kāi)發(fā)板,iMX6ULL與iMX6UL開(kāi)發(fā)板相比,功能無(wú)區(qū)別完全兼容,配置升級(jí),性能高,價(jià)格低。根據(jù)介紹可看出i.MX6ULL參數(shù)豐富 ,采用NXP i.MX6ULL處理器芯片,郵票孔封裝,支持Linux系統(tǒng),i.MX6ULL開(kāi)發(fā)板資料豐富,方便二次開(kāi)發(fā)設(shè)計(jì)。

    了解詳情
    OKMX6ULL-S開(kāi)發(fā)板
  • OKMX6ULL-C開(kāi)發(fā)板

    40*29mm,雙網(wǎng)雙CAN,8路串口| i.MX6ULL開(kāi)發(fā)板是基于NXP i.MX6ULL設(shè)計(jì)開(kāi)發(fā)的的一款Linux開(kāi)發(fā)板 ,主頻800MHz,體積小,其核心板僅40*29mm,采用板對(duì)板連接器,適應(yīng)場(chǎng)景豐富。 了解詳情
    OKMX6ULL-C開(kāi)發(fā)板

推薦閱讀 換一批 換一批