新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 基于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://m.butianyuan.cn/article/273002.htm

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

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

  (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對應端口連接并實時讀取,主要代碼如下。其中slv_reg0為IP核寄存器,tmp為用戶定義臨時寄存器,tmp的每一位和IP端口一一對應。實現(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)閉