打印

还是I2C

[复制链接]
1836|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
六楼的窗户|  楼主 | 2009-12-17 22:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
bool INL Write(unsigned char data_out)
{
unsigned char index;
// An I2C output byte is bits 7-0 (MSB to LSB). Shift one bit at a time to
// the SDATA output, and then clock the data to the I2C Slave device.
// Send 8 bits out the port
for(index = 0; index < 8; index++)
{
  // Output the data bit to the device
  SetSDATA(((data_out & 0x80) ? 1 : 0));
  data_out <<= 1;      // Shift the byte by one bit
  SetSCLK(1);       // Set SCLK high
  SetSCLK(0);       // Set SCLK low
}
SetSDATA(1);       // Set SDATA input/high
SetSCLK(1);        // Set SCLK high
if (!GetSDATA())
{
  SetSCLK(0);       // Set SCLK low
  return true;      // ACK from slave
} else
{
  SetSCLK(0);       // Set SCLK low
  return false;      // NACK from slave
}
}

相关帖子

沙发
六楼的窗户|  楼主 | 2009-12-17 22:31 | 只看该作者
SetSCLK();函数是只有输出状态, 1就高电平 0就电平


SetSDATA();有输入输出之分   1就是输入 (即是释放总线) 0。。。。。


I2C应答机制    前八周期干正事  发送数据地址什么的。  第就周期干应答这件事。  即是:主控机释放总线,        SetSDATA(1);    释放总线  SetSCLK(1);  高电平 (检测应答电平)   控制线总是在高电平检测总线电平的!

使用特权

评论回复
板凳
六楼的窗户|  楼主 | 2009-12-17 22:44 | 只看该作者
return ((*pFIO_FLAG_D & SDATA) ? 1 : 0);           SDATA已经宏定义到0x0004   
pFIO_FLAG_D  可以读取管脚电平状态!因此低电平有效if (!GetSDATA())
        {
                SetSCLK(0);                                                        // Set SCLK low
                return true;                                                // ACK from slave
        } else
        {
                SetSCLK(0);                                                        // Set SCLK low
                return false;                                                // NACK from slave
        }

使用特权

评论回复
地板
年轻不在| | 2009-12-17 22:45 | 只看该作者
lz你能发全部好不好?看的不是很明白!

使用特权

评论回复
5
米其林r| | 2009-12-20 21:30 | 只看该作者
看不明白到底想说什么

使用特权

评论回复
6
想实习去| | 2009-12-20 21:41 | 只看该作者
没有I2C协议基础知识根本看不懂,你就不能把相关链接发一下!?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

102

主题

497

帖子

0

粉丝