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

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

imxull-C核心板

FETMX6ULL-S核心板點擊查看詳情

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

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

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

imx6ull開發(fā)板

OKMX6ULL-C開發(fā)板(點擊查看詳情




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

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

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

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


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











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

  • OKMX6ULL-S開發(fā)板

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

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

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

推薦閱讀 換一批 換一批