版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
EMIO方式模拟I2C时序对ADV7511进行读写创建硬件工程,很简单,PS接出两个EMIO和一个74.25M时钟管脚约束
#ADV7511I2C_SCL
set_propertyPACKAGE_PINAA18[get_ports{gpio_0_tri_io[0]}]
set_propertyIOSTANDARDLVCMOS33[get_ports{gpio_0_tri_io[0]}]#ADV7511I2C_SDA
set_propertyPACKAGE_PINY16[get_ports{gpio_0_tri_io[1]}]
set_propertyIOSTANDARDLVCMOS33[get_ports{gpio_0_tri_io[1]}]#ADV7511HDMI_CLK
set_propertyPACKAGE_PINW18[get_ports{FCLK_CLK1}]
set_propertyIOSTANDARDLVCMOS33[get_ports{FCLK_CLK1}]导出Hardware,启动SDK,新建一个应用,添加以下代码EMIO_init.c
#include"EMIO_init.h"staticXGpioPspsGpioInstancePtr;
intEMIO_I2C_init(void)
{
XGpioPs_Config*GpioConfigPtr;
intxStatus;GpioConfigPtr=XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);
if(GpioConfigPtr==NULL)
returnXST_FAILURE;xStatus=XGpioPs_CfgInitialize(&psGpioInstancePtr,GpioConfigPtr,GpioConfigPtr->BaseAddr);
if(XST_SUCCESS!=xStatus)
print("EMIOINITFAILED");XGpioPs_SetDirectionPin(&psGpioInstancePtr,SIOC_PIN,DIRECTION_OUTPUT);
XGpioPs_SetDirectionPin(&psGpioInstancePtr,SIOD_PIN,DIRECTION_OUTPUT);XGpioPs_SetOutputEnablePin(&psGpioInstancePtr,SIOC_PIN,1);
XGpioPs_SetOutputEnablePin(&psGpioInstancePtr,SIOD_PIN,1);returnxStatus;
}voidCLOCK_HIGH(void)
{
XGpioPs_WritePin(&psGpioInstancePtr,SIOC_PIN,1);
}voidCLOCK_LOW(void)
{
XGpioPs_WritePin(&psGpioInstancePtr,SIOC_PIN,0);
}intGET_DATA(void)
{
returnXGpioPs_ReadPin(&psGpioInstancePtr,SIOD_PIN);
}voidDATA_INPUT(void)
{
XGpioPs_SetDirectionPin(&psGpioInstancePtr,SIOD_PIN,DIRECTION_INPUT);//
}voidDATA_OUTPUT(void)
{
XGpioPs_SetDirectionPin(&psGpioInstancePtr,SIOD_PIN,DIRECTION_OUTPUT);//
}voidDATA_HIGH(void)
{
XGpioPs_WritePin(&psGpioInstancePtr,SIOD_PIN,1);
}voidDATA_LOW(void)
{
XGpioPs_WritePin(&psGpioInstancePtr,SIOD_PIN,0);
}EMIO_init.h
#ifndefEMIO_INIT_H_
#defineEMIO_INIT_H_#include"xgpiops.h"intEMIO_I2C_init(void);#defineSIOC_PIN54
#defineSIOD_PIN55
#defineRESET_PIN56#defineDIRECTION_INPUT0
#defineDIRECTION_OUTPUT1voidCLOCK_HIGH(void);voidCLOCK_LOW(void);voidDATA_HIGH(void);voidDATA_LOW(void);voidDATA_INPUT(void);voidDATA_OUTPUT(void);intGET_DATA(void);#endif/*EMIO_INIT_H_*/I2C_ctrl.c
#include"sleep.h"
#include"EMIO_init.h"#defineI2C_DELAYusleep(10)voidI2C_start(void)
{
CLOCK_HIGH();
DATA_HIGH();
I2C_DELAY;
DATA_LOW();
I2C_DELAY;
CLOCK_LOW();
I2C_DELAY;
}voidI2C_end(void)
{
DATA_LOW();
I2C_DELAY;
CLOCK_HIGH();
I2C_DELAY;
DATA_HIGH();
I2C_DELAY;
}intI2C_sendbyte(unsignedcharvalue)
{
unsignedchartmp=value;
unsignedchari=0,ack;for(i=0;i<8;i++)
{
if(tmp&0x80)
DATA_HIGH();
else
DATA_LOW();I2C_DELAY;
CLOCK_HIGH();
I2C_DELAY;
CLOCK_LOW();
I2C_DELAY;tmp<<=1;
}DATA_HIGH();
DATA_INPUT();
I2C_DELAY;
CLOCK_HIGH();
ack=GET_DATA();
I2C_DELAY;
CLOCK_LOW();
I2C_DELAY;
DATA_OUTPUT();if(ack==1)
{
return-1;
}return0;
}unsignedcharI2C_readbyte(unsignedcharaddr)
{
unsignedchari=0,data=0;DATA_HIGH();
DATA_INPUT();for(i=0;i<8;i++)
{
CLOCK_HIGH();
I2C_DELAY;data<<=1;
if(GET_DATA())
data|=1;I2C_DELAY;
CLOCK_LOW();
I2C_DELAY;
}DATA_OUTPUT();
DATA_HIGH();
I2C_DELAY;
CLOCK_HIGH();
I2C_DELAY;
CLOCK_LOW();
I2C_DELAY;
DATA_HIGH();returndata;
}intI2C_readdata(unsignedcharid,unsignedcharaddr,unsignedchar*value)
{
//两相写
I2C_start();
if(I2C_sendbyte(id<<1)!=0)
{
gotoerror;
}if(I2C_sendbyte(a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度国际货物买卖合同(电子产品)
- 2024年快递公司运输合同
- 2024年国内外旅游服务合同样本
- 给儿子付首付赠与协议书(2篇)
- 2024年影视作品赞助与合作合同
- 2024光刻机技术支持与维修合同
- 2024年幼儿园扩建项目工程合同
- 2024年度电商平台运营与推广合同
- 2024年建筑扣件购销合同范本
- 2024年建筑用石料搬运合同
- 工业自动化系统集成项目验收方案
- 新教科版科学六年级上册全册实验汇总 (超全)
- 王洪图黄帝内经80课时讲稿
- 摊铺机司机班组级安全教育试卷
- 重症肌无力指南
- 限制被执行人驾驶令申请书
- 项目主要施工管理人员情况
- 个人借条电子版模板
- 关于学习“国语普通话”发声亮剑【三篇】
- 玻璃厂应急预案
- 婴幼儿游戏照料(婴幼儿回应性照护课件)
评论
0/150
提交评论