iMX6ULL應用筆記接口篇之UART接口

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

imxull-C核心板

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

iMX6ULL應用筆記接口篇主要適用于飛凌 OKMX6ULL-S 平臺 Linux4.1.15 操作系統,主要講解iMX6ULL系列產品接口的一些DEMO測試例程,本篇介紹SPICAN模塊講解相關知識點。本文使用的思路和方法僅供參考使用,其它arm開發板雖然芯片不同,但思路和方法有很多的共性,希望對您在板卡的使用中能夠有所幫助,更多ARM開發板相關資訊,關注飛凌嵌入式。 如對本文講解有不明之處,您也可以聯系飛凌的技術支持團隊咨詢了解。《iMX6ULL應用筆記》點此索取

先了解一下這款開發板

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

imx6ull開發板

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




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

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

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

三、USB 轉串口
出廠鏡像默認配置了 PL2303 的驅動啟動文件系統,插入 usb 轉串口,如下:

在 dev 下產生 ttyUSB0 節點。

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


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











相關產品 >

  • OKMX6ULL-S開發板

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

    了解詳情
    OKMX6ULL-S開發板
  • OKMX6ULL-C開發板

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

推薦閱讀 換一批 換一批