1. 程式人生 > >zynq PS端I2C的使用

zynq PS端I2C的使用

因為需要連線一款i2c介面的OLED,需要使用PS端的i2c介面。

1、PL端勾選上i2c並通過EMIO分配引腳(PS可以通過驅動EMIO控制PL部分的引腳)。

2、裝置樹zynq-7000.dtsi中將i2c0打成okay(最好在zynq-zed.dts中更改),

i2c1: [email protected] {
			compatible = "cdns,i2c-r1p10";
			status = "okay";
			clocks = <&clkc 39>;
			interrupt-parent = <&intc>;
			interrupts = <0 48 4>;
			reg = <0xe0005000 0x1000>;
			#address-cells = <1>;
			#size-cells = <0>;
		};

3、編譯後放到sd中或者燒到flash中啟動,裝置下會多出i2c-0節點

zynq> ls /dev/
AXIDMA              ram10               tty36
console             ram11               tty37
cpu_dma_latency     ram12               tty38
full                ram13               tty39
i2c                 ram14               tty4
i2c-0               ram15               tty40

4、至此就可以編寫應用程式了,進行i2c的讀寫操作。

iic_fd = open("/dev/i2c-0",O_RDWR);
void Write_IIC_Command(unsigned char IIC_Command)
{
   struct i2c_rdwr_ioctl_data i2c_data;
   struct i2c_msg data_msgs[3];
   int ret;
   unsigned char buf[2];
   i2c_data.nmsgs = 1;
   data_msgs[0].addr=0x78>>1;
   data_msgs[0].flags=0;//0-write,1-read
   data_msgs[0].len=2;
   data_msgs[0].buf = buf;
   data_msgs[0].buf[0] = 0x00;
   data_msgs[0].buf[1] = IIC_Command;
   i2c_data.msgs = data_msgs;
   ret = ioctl(iic_fd,I2C_RDWR,&i2c_data);
   if(ret<0)
   	perror("Write_IIC_Command error\n");
}

相關推薦

zynq PSI2C的使用

因為需要連線一款i2c介面的OLED,需要使用PS端的i2c介面。 1、PL端勾選上i2c並通過EMIO分配引腳(PS可以通過驅動EMIO控制PL部分的引腳)。 2、裝置樹zynq-7000.dtsi中將i2c0打成okay(最好在zynq-zed.dts中更改), i

zynq平臺PS對DDR絕對地址訪問

當PL端需要通過AXI匯流排訪問DDR時,而PS端同樣要訪問到DDR,為了實現PL和PS對相同地址訪問,可以通過定義變數到絕對地址的方法。 1. 單個變數 當只有一個變數情形下,可以定義一個指向DDR記憶體中的指標,比如: int* p=(int*)(0x100000); 2.

ZYNQ-7000開發之七】AXI CDMA特點以及在PS使用的步驟_理論部分 未完待續

本編文章是AXI Central Direct Memory Access v4.1的閱讀筆記 硬體規格部分 簡介: AXI CDMA為嵌入式系統提供了高效能的片上互聯 The AXI CDMA provides high-bandwidth D

pynq-z2(三)PS獨立執行(正確版)

在上一篇寫了一個錯誤版,主要的錯誤就是在addip後Run Block Automation並沒有配置上,這很讓人惱火,經過使用https://blog.csdn.net/bramblewalls/article/details/80045922這篇文章提到的PYNQ-Z1板

PYNQ上手筆記 | ③PS+PL點燈

上一節中分別獨立實驗了Zynq的PS端和PL端,並初步實驗了PS端先硬體再軟體的開發流程和IP核設計的設計方法。第一節中提及到:Zynq是以PS端的ARM處理器系統為核心的,PS端和PL端是通過AXI匯流排,並且Xilinx已經提供了各種AXI通訊的IP核,接下來的實驗中將會更加明確的體驗到

PYNQ上手筆記 | ②PLPS的獨立開發

在上一篇中提到,Pynq是為了降低開發人員的門檻,但是作為一個學習嵌入式開發的學生,當然要一步一個腳印打好基礎,所以選擇從Zynq入手學習,等跑起來Linux系統再運用Python開發也不遲,知其然也知其所以然,開發效率更高,所以接下來的幾篇都是關於Zynq的,如果想直接玩Pynq可直接跳過

Zynq PS DMA控制器應用筆記

Zynq PS DMA應用筆記 Hello,Panda Zynq-7000系列器件PS端的DMA控制器採用ARM的IP核DMA-330(PL-330)實現。有關DMA控制器的硬體細節及相關指令集、程式設計例項內容參考ARM官方文件:       DDI0424D:dma33

PS-Scan ports掃描網絡

powershell 端口掃描用PS寫出端口掃描 TCP139/445 AND UDP 137/138用法簡單:在c:\temp\target.txt寫入多臺IP地址端口可以自己定義以下是代碼:<# This script can be used to Scan port TCP139/445 AND

Zynq-Linux移植學習筆記之31-使用者自定義I2C驅動

1、背景介紹 板子上通過ZYNQ的I2C-0控制器連線了三片DBF晶片和一片Ti的226測功耗晶片,示意圖如下: 如上圖所示,三塊DBF晶片的I2C地址分別為2,4,8,Ti 226晶片的I2C地址為0x40.現在需要ZYNQ通過I2C匯流排讀寫這四塊晶片的暫存器數值

PYNQ2之ZYNQPS讀寫DDR

1、前期準備        和前面的不一樣這裡需要用到DDR,所以需要在PS中正確配置DDR,這也是看別人zedboard板卡教程自己卻一直實行不了的原因。 問題一:串列埠列印問題        首先是串列埠驅動問題,網上下載驅動,安裝一直提示未正確安裝驅動,裝置工作不

ZYNQ PL與PS互動的最大頻寬

PL與PS的互動使用AXI_HP介面可以達到最大的頻寬。 在典型的150MHz的時鐘速度下,AXI_HP介面的讀寫頻寬最高均可達到1200MB/s。在Zynq-7000系列的器件中包含有4個AXI_HP介面,因此總的頻寬最高可達到9600MB/s。 如果資料都存放在DDR中,PL都是通過PS

轉發:ZYNQ基礎系列(七) LWIP資料通路 -- PL資料->PS->PC機(TCP)

LWIP資料通路 實驗準備: 基礎概念 乙太網MAC是一個基礎模組,它使得我們可以實現一個TCP/IP協議棧,協議使得應用可以基於網路來通訊。如果想要解析一個TCP/IP協議棧,需要了解以下層次: • 第一層——物理層:(描述物理連線)主要由外部物理層晶

ZYNQ PL-PS中斷

硬體:Xilinx Zynq-7000 SoC ZC706 版本:vivado2015.4 目的:PL觸發中斷,PS做中斷處理 PL部分 新增兩個中斷源,一個普通中斷,一個FIQ中斷,對應中斷號

Xilinx ZYNQ 7000+Vivado2015.2系列(三)之HelloWorld實驗(最小系統)(純PS

前言: 使用的板子是zc702。用Vivado的IP核搭建最小系統,包括ARM核(CPU xc7z020),DDR3(4×256M),一個UART串列埠(Mini USB轉串列埠),純PS,通過串列埠打印出HelloWorld,工程雖小,五臟俱全,算是一種朝聖。配置要和板子

Zynq-Linux移植學習筆記之13-i2c驅動配置

1、 背景介紹 板子上通過I2C匯流排與zynq相連的是三片1848 如上圖所示,zynq通過I2C匯流排與3片CPS-1848交換晶片相連,3片1848晶片的I2C地址分別為2,4,8. 目前zynq上linux I2C驅動採用的是i2c-cadence(driver

Zedboard & Zynq 影象採集(五) 板Linux下視訊TCP傳送 & Linux上位機QT視訊顯示

前面幾篇已經陸續講述了影象採集,傳輸,Linux系統搭建等,這一篇就講一下自制一個簡單的板端視訊傳送和Linux上位機視訊顯示客戶端。板端視訊傳送用Zedboard做視訊資料傳輸,我能想到的是兩條路,一條就是網口,一條就是USB,USB傳輸方式打算以後研究一下,用網口是比較熟

ZYNQ學習之pl和ps介面

1、PL和PS的介面型別總共有兩種: (1)功能介面:AXI、EMIO、中斷、DMA流控制、時鐘除錯介面。 (2)配置介面:PCAP、SEU、配置狀態訊號和Program/Done/Init訊號。這些訊號連線到PL內配置模組的固定邏輯上,給PS提供對PL的控制能力。 2

Zynq平臺下linux的I2C驅動(RTC+EEPROM)

現在ARM下對SoC開發板的硬體描述都是採用devicetree檔案,使用linux自帶的dtc程式將dts編譯成dtb之後,由u-boot將dtb匯入給linux核心,linux核心讀取dtb,然後註冊裝置的resource,linux核心使用of_系列函式API讀取硬體

Zynq的PL-PS中斷在裝置樹中的描述

http://blog.csdn.net/klaus_wei/article/details/42915545 [email protected] { compatible = "xlnx,axi-dma-mm2s-channel";interrupts = &

【原創】zynq-7010下運用I2C匯流排完成對LSM303D感測器的資料讀取

介紹 這是本人第一次寫部落格,我的畢設在用FPGA去讀取LSM303D感測器的中的三軸的磁場強度資料,這也是我第一次用zynq-7010板子,第一次接觸Vivado,我用了將近兩個月的時間摸索,中間經歷了很多失敗的嘗試,還好最近有了突破,因為目前網上基本沒有關