求助TWI程序解释我是初学者,盼各位大侠鼎立相助!!!

[复制链接]
 楼主| nakete 发表于 2007-12-24 16:56 | 显示全部楼层 |阅读模式
本人参照了peater猪&nbsp;的程序读TWI方式,那边发送数据测试OK,现在这边作为读数据参照他的程序<br />http://blog.21ic.com/user1/3017/archives/2006/24361.html<br />中的一段,如下:<br />int&nbsp;AT91F_TWI_ReadByte(const&nbsp;AT91PS_TWI&nbsp;pTwi&nbsp;,int&nbsp;mode,&nbsp;int&nbsp;int_address,&nbsp;u8&nbsp;*data,&nbsp;int&nbsp;nb)<br />{<br />&nbsp;unsigned&nbsp;int&nbsp;status,counter=0,error=0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;//&nbsp;Set&nbsp;TWI&nbsp;Internal&nbsp;Address&nbsp;Register<br />&nbsp;if&nbsp;((mode&nbsp;&&nbsp;AT91C_TWI_IADRSZ)&nbsp;!=&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pTwi-&gtTWI_IADR&nbsp;=&nbsp;int_address;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br /><br />&nbsp;pTwi-&gtTWI_MMR&nbsp;=&nbsp;mode&nbsp;|&nbsp;AT91C_TWI_MREAD;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pTwi-&gtTWI_CR&nbsp;=&nbsp;AT91C_TWI_START&nbsp;|&nbsp;AT91C_TWI_MSEN;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status&nbsp;=&nbsp;pTwi-&gtTWI_SR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((status&nbsp;&&nbsp;TWI_ERROR)&nbsp;==&nbsp;TWI_ERROR)&nbsp;error++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//uprintf(&nbsp;&quot;
&nbsp;AT91C_TWI_START&nbsp;|&nbsp;AT91C_TWI_MSEN&nbsp;
&quot;&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(&nbsp;counter&nbsp;=&nbsp;0;&nbsp;counter&nbsp;&lt&nbsp;nb;&nbsp;counter++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//uprintf(&nbsp;&quot;
&nbsp;nb:&nbsp;%d&nbsp;
&quot;,&nbsp;counter&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status&nbsp;=&nbsp;pTwi-&gtTWI_SR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(counter&nbsp;==&nbsp;(nb&nbsp;-&nbsp;1))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pTwi-&gtTWI_CR&nbsp;|=&nbsp;AT91C_TWI_STOP;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((status&nbsp;&&nbsp;TWI_ERROR&nbsp;)==&nbsp;TWI_ERROR)&nbsp;error++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(&nbsp;!(status&nbsp;&&nbsp;AT91C_TWI_RXRDY)&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status&nbsp;=&nbsp;pTwi-&gtTWI_SR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((status&nbsp;&&nbsp;TWI_ERROR)&nbsp;==&nbsp;TWI_ERROR)&nbsp;error++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//uprintf(&nbsp;&quot;
&nbsp;AT91C_TWI_RXRDY&nbsp;
&quot;&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(data+counter)&nbsp;=&nbsp;pTwi-&gtTWI_RHR;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(!(status&nbsp;&&nbsp;AT91C_TWI_TXCOMP))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status&nbsp;=&nbsp;pTwi-&gtTWI_SR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((status&nbsp;&&nbsp;TWI_ERROR)&nbsp;==&nbsp;TWI_ERROR)&nbsp;error++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;}<br />&nbsp;return&nbsp;0;<br />}<br />目前有几个疑问<br />const&nbsp;AT91PS_TWI&nbsp;pTwi&nbsp;是做什么用的?该如何设置?<br />int&nbsp;mode&nbsp;又是做什么用的?该如何设置?<br />int&nbsp;int_address&nbsp;这个是设置读地址的我知道&nbsp;<br />u8&nbsp;*data,前面的u8是什么意思??这个又是做什么用的??<br />int&nbsp;nb又是做什么用的?该如何设置?是否为传送数据的个数??<br />还有一个TWI_ERROR是从哪儿出来的?我用的是AT91SAM9261<br />我是初学者,盼各位大侠鼎立相助!!!<br />
阿南 发表于 2007-12-24 18:56 | 显示全部楼层

只知道一点,哈哈

pTwi被定义成AT91PS_TWI结构的常数结构指针<br />u8应该是#define&nbsp;u8&nbsp;unsigned&nbsp;char
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部