採用飛凌imx6q的核心板,預設配置了espi2,由於專案中使用了espi1,因此需要配置espi1,對除錯過程進行記錄。
上面第乙個是預設的,第二個是我新增的,對這個不是很熟,初步按照這個方式配置。
2、配置espi1的gpio管腳,預設和uart4復用,注釋掉uart4的引腳配置:
然後重新編譯裝置樹,完了用新的裝置樹啟動,啟動完了,可以看到已經載入了兩個裝置spi0和spi1:
/dev目錄下由兩個spi節點
然後根據預設的測試程式測試了下spidev0.0發現時鐘和資料都出來了,表明espi1已經可以使用,但是此時使用spidev1.0的時候發現並無任何時鐘和資料輸出,感覺是配置espi1的時候影響了espi2,嘗試修改裝置樹的fsl,spi-num-chipselects = <1>;字段,但並不起作用。單獨配置espi2是沒問題的,spidev1.0可以使用,但同時配置espi1和espi2就會出現espi2不能使用,暫時不知道怎麼回事。
3、測試
3.1 接線
與spi通訊的裝置是三線的乙個dac的spi晶元,且只支援寫,接線方式需要注意,除了片選和時鐘對接,從裝置的資料線接到imx6q的mosi管腳即可。
3.2 軟體測試
a. 基本上是採用了linux提供了spi_test.c進行測試,修改了部分引數,第一次測試發現晶元沒有任何輸出,但是量了下資料線、時鐘線和片選都有訊號;
b. 後來又檢視這個dac的晶元手冊,查到說需要配置spi主裝置為下降沿傳送資料(pol=0,pha=1),因此重新配置後進行第二次測試發現仍然沒有輸出;
c.又把spi**的配置引數詳細看了下,有個一次傳送的資料位數,預設是8位的,由於我需要寫乙個16位的資料,因此就嘗試改為了16位資料的模式,發現這次有效了,晶元有輸出訊號;
d.為什麼8位資料和16位資料會產生不同的影響呢,於是又用示波器分別抓取了一下8位模式和16位模式下的區別,發現16位模式是連續傳送的16bit資料,而8位資料模式每次傳送8位,分了兩次傳送,預設是先傳送低位元組資料。比如我需要傳送0x04e0,採用16位資料模式就直接一次性傳送完畢,而採用8位資料模式就先傳送的0xe0,然後傳送了0x04,導致晶元接收的資料為0xe004,這個資料會造成晶元休眠模式,因此沒有輸出,於是把資料位元組調換後傳送發現8位資料即可生效。
但是現在就乙個問題,espi1不能使用,對裝置樹的配置還不熟,改起來費勁。
qemu gdb 除錯imx6學習筆記
準備對linux的記憶體管理單元進行學習,單純閱讀原始碼還是不如一步一步除錯核心理解深刻,對於除錯核心的方法,網上也有不少,主要是利用qemu gdb imx6對核心進行除錯。qemu的英文單詞是 quickemulator,它是乙個小巧的模擬器。還有很多模擬器,比如vmware virtual b...
imx6ull uboot 修改除錯串列埠1為串列埠3
board myir imx6ull y2 512 ddr 4gb emmc 總的來說,乙個board目錄下的c檔案,2個configs目錄下的 件。1.修改uboot原始碼下的include configs mx6 common.件 define config cons index 32.修改ub...
imx6 配置串列埠波特率 PLC串列埠通訊除錯過程
串列埠通訊是一種簡單的通訊方式,通過連線少量線纜即可完成資料通訊。做串列埠通訊除錯,一般需要進行如下幾個過程 1 確認上位機通訊 2 確認下位機通訊 3 上 下位機聯調通訊。上位機是指plc,下位機是指進行串列埠通訊除錯的器件 硬體 usb rs232串列埠電纜 plc 膝上型電腦 若電腦自帶串列埠...