pl022調試備忘

來源:互聯網
上載者:User

記住把地址0x67800030第17位置1。目的是開啟spi1的所在的那一組GPIO(資料線,時鐘線以及片選線對應的GPIO供電)的晶片內部供電,這一路供電叫vdd_nfs。要注意在v2的DVB板上這一路供電可以通過跳線JP12直接提供,所以如果直接通過跳線由外部提供一個1v8的電壓後spi1也是可以使用的。

以上問題的發現是因為測試中總是發現spi1沒有clk輸出,對應的其他資料線也沒有訊號。而當修改spi1控制器對應的寄存器後發現寄存器的值都是正常變化的,由此斷定spi1控制器本身已經在正常工作了,只是其對應的gpio沒有拉動。那麼可是gpio功能配置錯誤,但是檢查了gpio功能配置的相關寄存器後發現這幾個gpio功能選擇都是正常的。繼而想辦法確定這幾個gpio的硬體是否正常,方法是將這幾個gpio的功能配置為功能1,即普通的gpio,然後再配置其為輸出方向,然後設定相關寄存器讓它拉高拉低,發現竟然不動。如此看來真有點兒懷疑是gpio的硬體出了問題。但是專門針對gpio的測試時卻發現這幾個gpio都是正常的。因此推斷肯定是我對gpio的配置有些問題。另外一個同事是專門做gpio測試的,和他溝通後,他指出可能是spi1所用的哪一組gpio沒有被供電。解決問題!

順便說下gpio的功能選擇和配置。

每16個gpio分為一組。假設你要配置gpio_70,那麼用70除以16,商4餘6.所以這個gpio在第四組,在組內的寄存器位移量是6,也就是第6位。

每一組gpio涉及80個32bit的寄存器。假設gpio對應的寄存器開始於寄存器0x6E000000,也就是第0組始於0x6E000000,那麼第一組始於0x6E000080,第二組始於0x6E000100,第三組始於0x6E000180,第四組始於0x6E000200.以此類推。

首先在0x6F000000位置選擇gpio的功能(見GPD選項卡)。絕大多數gpio都各自有4中功能可以配置。

對於gpio_70的具體功能選擇在0x6F000084寄存器的[ 27:26 ] 兩個位。

功能選擇完成後(這裡我們選擇的是第一功能,即gpio功能,這樣我們才需要第二步)

第二步是配置gpio的

方向: 設定寄存器0x6E000200的第6位為1表示輸出

掩碼:設定寄存器0x6E000204的第6位為1,這是掩碼,就不說了。

拉高拉低; 設定寄存器0x6E000208的第6位為1,這個表示拉高。

完了。

0x67800040的 [5:6] 都設定為1可以配置晶片的VIO電壓為3.3V

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.