新聞中心

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

        基于Zynq的OLED驅(qū)動設(shè)計

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

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

        本文引用地址:http://www.104case.com/article/273002.htm

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

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

          (3)my_oledIP核邏輯設(shè)計主要完成IP核引腳添加、端口映射和用戶邏輯功能。首先要對設(shè)計的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語言進行端口設(shè)計,主要進行以下兩個設(shè)計。

          聲明IP和用戶6個信號和電源的端口。代碼如下:

          DC∶outstd_logic;

          RES∶outstd_logic;

          SCLK∶outstd_logic;

          SDIN∶outstd_logic;

          VBAT∶outstd_logic;

          VDD∶outstd_logic;

          將用戶端口和IP核端口進行映射,代碼如下:

          DC =>DC,

          RES =>RES,

          SCLK =>SCLK,

          SDIN =>SDIN,

          VBAT =>VBAT,

          VDD =>VDD,

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

          always@(posedgeBus2IP_Clk)

          begin

          tmp<=slv_reg0[5:0];

          end

          4 OLED驅(qū)動程序設(shè)計

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

          4.1 初始化

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

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

          

         

          圖4 SSD1306初始化步驟



        關(guān)鍵詞: Zynq OLED

        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 龙南县| 金川县| 万安县| 江孜县| 玉溪市| 嘉善县| 崇左市| 报价| 太谷县| 宁国市| 鸡东县| 始兴县| 祥云县| 都昌县| 建宁县| 南宫市| 双江| 错那县| 分宜县| 肃南| 达州市| 永泰县| 元氏县| 桂平市| 峨山| 平舆县| 和田县| 宣恩县| 苏尼特左旗| 元朗区| 淮滨县| 清水县| 莱西市| 高碑店市| 蒙山县| 祁连县| 林芝县| 桃园县| 称多县| 黄大仙区| 孟村|