UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

取消
显示结果 
搜索替代 
您的意思是: 
Observer yangshaokai
Observer
690 次查看
注册日期: ‎08-06-2018

microblaze 驱动iic ,无警告无错误,但是从机无法收到数据

本人初次接触软核,然后驱动iic,已经确定时钟复位都没有问题,硬件电路也测试没有问题,从器件也没有问题

按照官方历程拷贝了iic驱动的c代码,没有错误,也没有警告,

但是程序下载进去,现象是程序一直正常运行,从器件没有数据,示波器显示SCL SDA一直为高

以下是主要代码,很简单都是从历程拷贝过来的,自己写了函数体,希望能得到一个思路或者具体解决方案

(附件是源代码)


main函数中执行的是器件以及iic的初始化

while.png     

下面这个函数是配置器件的初始化,其中包含一个iic初始化函数(iic_init),其他函数是历程

config.png  

下面这个函数是iic初始化的函数,以及设置从机地址

init.png 

下面这个函数是发送数据的主体

write.png

0 项奖励
10 条回复10
Observer yangshaokai
Observer
675 次查看
注册日期: ‎08-06-2018

回复: microblaze 驱动iic ,无警告无错误,但是从机无法收到数据

目前重新编译一遍下载程序后 发现程序执行到ii_init中的 XIic_CfgInitialize后返回失败,执行到下图中的红框后返回失败

]{TD_EP){LM~$S3`$6[L}H9.png

0 项奖励
Xilinx Employee
Xilinx Employee
667 次查看
注册日期: ‎09-14-2018

回复: microblaze 驱动iic ,无警告无错误,但是从机无法收到数据

hi 

可以单步看下C代码中在哪句执行失败的?

0 项奖励
Observer yangshaokai
Observer
653 次查看
注册日期: ‎08-06-2018

回复: microblaze 驱动iic ,无警告无错误,但是从机无法收到数据

比较底层的代码都是直接执行汇编的,看不懂....我推理是下图中的地方出了问题,我把它注释掉,重新初始化一遍后可以通过,不知道这样可以不

H(3GHXAG@W8@{9H%09~DIIG.png  


   

但是 接下来 I2C_SetupInterruptSystem(&Intc,&Iic)函数中的这个地方又返回了失败,如下图

V)G~~2P64DX4~DE`J]Y3`]R.png 

上图函数的  这里返回了失败,如下图,这个注释掉,全部没有失败,但是从机没有数据


$8E3FXH79L}XG{R)Z6({5RQ.png

0 项奖励
Observer yangshaokai
Observer
649 次查看
注册日期: ‎08-06-2018

回复: microblaze 驱动iic ,无警告无错误,但是从机无法收到数据

以上那些问题是由于反复初始化造成的,后来我修改了代码,没有错误了;可以不用看那些我的回复啦,谢谢

但是从机还是没有数据,这个iic的外设scl是inout的,然后我的从机是input,这影响吗

0 项奖励
Xilinx Employee
Xilinx Employee
526 次查看
注册日期: ‎09-14-2018

回复: microblaze 驱动iic ,无警告无错误,但是从机无法收到数据

@yangshaokai

应该没有关系,

1. 实际测量下线路上有正确的信号吗?

2. slave的地址对吗?

0 项奖励
Observer yangshaokai
Observer
519 次查看
注册日期: ‎08-06-2018

回复: microblaze 驱动iic ,无警告无错误,但是从机无法收到数据

 谢谢!

有波形,从机地址对,

可以看到波形上先发了正确的iic总线地址,然后发了寄存器地址(都有ack),然后scl就一直为0,卡着不动了,程序中显示iic总线正忙。如下上面的蓝色的信号为scl

,后期SCL一直为0,所以通信不成功,就差这最后一步了。
HLGPCAT8Q`_TK5{5T1ZPLM9.png

HLGPCAT8Q`_TK5{5T1ZPLM9.png
0 项奖励
Xilinx Employee
Xilinx Employee
415 次查看
注册日期: ‎09-14-2018

回复: microblaze 驱动iic ,无警告无错误,但是从机无法收到数据

hi @yangshaokai

你用的是什么板子和器件?

----------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
----------------------------------------------------------------------------------------------

0 项奖励
Observer yangshaokai
Observer
369 次查看
注册日期: ‎08-06-2018

回复: microblaze 驱动iic ,无警告无错误,但是从机无法收到数据

板子是我们自己画的板子,器件是K7160TFFG676-2,用的软核,外接1.5k上拉电阻,SCL目前就是图示那样,数据还没发完就一直为低,不拉高

0 项奖励
Xilinx Employee
Xilinx Employee
362 次查看
注册日期: ‎09-14-2018

回复: microblaze 驱动iic ,无警告无错误,但是从机无法收到数据

hi @yangshaokai

因为信号正常,我理解你的硬件电路应该是OK的。

综合 a) scl一个字节后一直拉低 b) master状态显示为bus busy

我感觉有可能是slave 拉低scl迫使master进入等待。结合所连接的从站来看,是否有这种可能?

----------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
----------------------------------------------------------------------------------------------

0 项奖励
Observer yangshaokai
Observer
354 次查看
注册日期: ‎08-06-2018

回复: microblaze 驱动iic ,无警告无错误,但是从机无法收到数据

slave的scl为input,只接受scl,不是inout信号(主机为inout),所以从机不控制scl,我也很郁闷.....

0 项奖励