<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Zynq的OLED驅(qū)動(dòng)設(shè)計(jì)

          基于Zynq的OLED驅(qū)動(dòng)設(shè)計(jì)

          作者: 時(shí)間:2015-04-22 來源:網(wǎng)絡(luò) 收藏

            的硬件系統(tǒng)是指在PL中配置相關(guān)外設(shè),掛載到PS中,作為PS部分的外設(shè)使用。驅(qū)動(dòng)主要用到6個(gè)IO口,在生成硬件系統(tǒng)時(shí),只需要利用Xilinx的嵌入式工具XPS生成最小硬件系統(tǒng),然后把的相關(guān)引腳添加到最小硬件系統(tǒng)中。主要過程如下:

          本文引用地址:http://www.ex-cimer.com/article/273002.htm

            (1)根據(jù)芯片型號(hào),根據(jù)XPS工具設(shè)計(jì)流程,生成的最小硬件系統(tǒng)。

            (2)在最小硬件系統(tǒng)中,添加外設(shè)IPmy_oled,把的SPI引腳添加到工程中。添加一個(gè)6位寄存器,每位和SPI引腳對(duì)應(yīng)。

            (3)my_oledIP核邏輯設(shè)計(jì)主要完成IP核引腳添加、端口映射和用戶邏輯功能。首先要對(duì)設(shè)計(jì)的IP核添加引腳,在系統(tǒng)生成的MPD文件中,添加OLED的相關(guān)引腳端口和方向信息。

            在MPD文件中,在PORT下添加OLED的相關(guān)引腳和方向信息,具體代碼如下:

            PORTDC=“”,DIR=O

            PORTRES=“”,DIR=O

            PORTSCLK=“”,DIR=O

            PORTSDIN=“”,DIR=O

            PORTVBAT=“”,DIR=O

            PORTVDD=“”,DIR=O

            (4)在系統(tǒng)生成的my_oled.vhd文件中,用VHDL語言進(jìn)行端口設(shè)計(jì),主要進(jìn)行以下兩個(gè)設(shè)計(jì)。

            聲明IP和用戶6個(gè)信號(hào)和電源的端口。代碼如下:

            DC∶outstd_logic;

            RES∶outstd_logic;

            SCLK∶outstd_logic;

            SDIN∶outstd_logic;

            VBAT∶outstd_logic;

            VDD∶outstd_logic;

            將用戶端口和IP核端口進(jìn)行映射,代碼如下:

            DC =>DC,

            RES =>RES,

            SCLK =>SCLK,

            SDIN =>SDIN,

            VBAT =>VBAT,

            VDD =>VDD,

            (5)在系統(tǒng)生成的user_logic.v文件中,用Verilog語言進(jìn)行邏輯設(shè)計(jì),實(shí)現(xiàn)寄存器和SPI對(duì)應(yīng)端口連接并實(shí)時(shí)讀取,主要代碼如下。其中slv_reg0為IP核寄存器,tmp為用戶定義臨時(shí)寄存器,tmp的每一位和IP端口一一對(duì)應(yīng)。實(shí)現(xiàn)把slv_reg0寄存器低6位實(shí)時(shí)傳給tmp寄存器,通過對(duì)寄存器slv_reg0的寫操作達(dá)到控制6個(gè)引腳的時(shí)序。

            always@(posedgeBus2IP_Clk)

            begin

            tmp<=slv_reg0[5:0];

            end

            4 OLED驅(qū)動(dòng)程序設(shè)計(jì)

            由于ZedBoard開發(fā)板上的OLED使用的是SPI協(xié)議,并且只支持寫,不支持讀,因此控制OLED就是在SCLK的時(shí)鐘下,通過SDIN進(jìn)行命令和數(shù)據(jù)的傳輸。OLED的控制需要經(jīng)過初始化、傳數(shù)據(jù)和命令以及對(duì)顯存設(shè)置等操作實(shí)現(xiàn)。

            4.1 初始化

            驅(qū)動(dòng)IC的初始化代碼,可以參考廠家推薦的設(shè)置,但需要根據(jù)開發(fā)板上OLED實(shí)際參數(shù)進(jìn)行一些修改。

            根據(jù)SSD1306數(shù)據(jù)手冊的初始化說明,具體步驟如圖4所示。初始化的實(shí)現(xiàn)就是對(duì)SSD1306進(jìn)行寫命令。

            

           

            圖4 SSD1306初始化步驟



          關(guān)鍵詞: Zynq OLED

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();