TWI是什么意思?

TWI是什么意思?,第1张

Twitter推特。

Twitter(通称推特)是一家美国社交网络及微博客服务的网站,是全球互联网上访问量最大的十个网站之一。是微博客的典型应用。它可以让用户更新不超过140个字符的消息,这些消息也被称作“推文(Tweet)”。

这个服务是由杰克·多西在2006年3月创办并在当年7月启动的。Twitter在全世界都非常流行, 据Twitter现任CEO迪克·科斯特洛宣布,截至2012年3月,Twitter共有1.4亿活跃用户,Twitter被形容为“互联网的短信服务”。

扩展资料:

Twitter发展。

2007年时,平均每季度会产生400,000条消息,而到了2008年,这个数字已经增长至1亿。在2010年2月,Twitter用户平均每天会发送5000万条消息。到2010年3月,Twitter官方一共记录了超过70,000款第三方应用程序。到2010年6月,根据Twitter提供的数据,平均每天会产生6500万条消息,也就是每秒750条消息。Compete.com网站显示,Twitter早在2009年1月就已经从排名第22位的社交网络站点上升至第三位。

参考资料来源:百度百科-Twitter

这个是MEGA128和24c64 twi 通信的程序,我已经实现 你参考下,单字节读写没问题,连续读还有问题!

#include"main.h"

#include"delay.h"

//TWI状态定义

//MT 主方式传输 MR 主方式接收

#define START 0x08

#define RE_START 0x10

#define MT_SLA_ACK 0x18

#define MT_SLA_NOACK 0x20

#define MT_DATA_ACK 0x28

#define MT_DATA_NOACK 0x30

#define MR_SLA_ACK 0x40

#define MR_SLA_NOACK 0x48

#define MR_DATA_ACK 0x50

#define MR_DATA_NOACK 0x58

//常用TWI *** 作(主模式写和主模式读)

#define Start() (TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN))

#define Stop() (TWCR=(1<<TWINT)|(1<<TWSTO)|(1<<TWEN))

#define Wait() {while(!(TWCR&(1<<TWINT)))}

#define TestAck() (TWSR&0xf8)

#define SetAck() (TWCR|=(1<<TWEA))

#define SetNoAck() (TWCR&=~(1<<TWEA))

#define Twi() (TWCR=(1<<TWINT)|(1<<TWEN))

#define Write8Bit(x) {TWDR=(x)TWCR=(1<<TWINT)|(1<<TWEN)}

#define rd_24c64_add 0xa1

#define wr_24c64_add 0xa0

uint8 i2c_Write_One_24c64(uint8 Wdata,uint16 RomAddress)

{

Start()//I2C启动

Wait()

if(TestAck()!=START) return 1//ACK

Write8Bit(wr_24c64_add)//写I2C从器件地址和写方式

Wait()

if(TestAck()!=MT_SLA_ACK) return 1//ACK

Write8Bit((uint8)(RomAddress>>8))//写24C32的ROM高地址

Wait()

if(TestAck()!=MT_DATA_ACK) return 1//ACK

Write8Bit((uint8)RomAddress)//写24C32的ROM低地址

Wait()

if(TestAck()!=MT_DATA_ACK) return 1//ACK

Write8Bit(Wdata)//写数据到24C32的ROM

Wait()

if(TestAck()!=MT_DATA_ACK) return 1//ACK

Stop()//I2C停止

Delayms(10)//延时等EEPROM写完

return 0

}

/************************************************

*函数名称: uint8 i2c_Read_One_24c64(uint8 RomAddress)

*入口参数: uint8 RomAddress,ROM地址

*出口参数: uint8,读到的数据,如果读失败也返回0

*函数功能: I2C总线读一个字节24c64

*创建时间: 2009-09-24 eleShrimp

*修改说明:

/************************************************/

uint8 i2c_Read_One_24c64(uint16 RomAddress)

{

uint8 temp

Start()//I2C启动

Wait()

if (TestAck()!=START) return 0//ACK

Write8Bit(wr_24c64_add)//写I2C从器件地址和写方式

Wait()

if(TestAck()!=MT_SLA_ACK) return 0//ACK

Write8Bit((uint8)(RomAddress>>8))//写24c64的ROM高地址

Wait()

if(TestAck()!=MT_DATA_ACK) return 0//ACK

Write8Bit((uint8)RomAddress)//写24c64的ROM低地址

Wait()

if (TestAck()!=MT_DATA_ACK) return 0

Start()//I2C重新启动

Wait()

if (TestAck()!=RE_START) return 0

Write8Bit(rd_24c64_add)//写I2C从器件地址和读方式

Wait()

if(TestAck()!=MR_SLA_ACK) return 0//ACK

Twi()//启动主I2C读方式

Wait()

if(TestAck()!=MR_DATA_NOACK) return 0//ACK

temp=TWDR//读取I2C接收数据

Stop()//I2C停止

return temp

}

/************************************************

*函数名称: uint8 i2c_Write_Num_24c64(uint8 *Wdata,uint8 num,uint8 RomAddress)

*入口参数: uint8 *Wdata,数据指针;uint8 num,写入的数据个数;uint8 RomAddress,ROM地址

*出口参数: uint8,返回0:写成功返回非0:写失败

*函数功能: I2C总线写N个字节24c64

*创建时间: 2009-09-24 eleShrimp

*修改说明:

/************************************************/

uint8 i2c_Write_Num_24c64(uint8 *Wdata,uint8 num,uint16 RomAddress)

{

uint8 i

Start()//I2C启动

Wait()

if(TestAck()!=START) return 1//ACK

Write8Bit(wr_24c64_add)//写I2C从器件地址和写方式

Wait()

if(TestAck()!=MT_SLA_ACK) return 1//ACK

Write8Bit((uint8)(RomAddress>>8))//写24c64的高8位ROM地址

Wait()

if(TestAck()!=MT_DATA_ACK) return 1//ACK

Write8Bit((uint8)(RomAddress))//写24c64的低8位ROM地址

Wait()

if(TestAck()!=MT_DATA_ACK) return 1//ACK

for(i=0i<numi++)

{

Write8Bit(Wdata[i])//写数据到24C02的ROM

Wait()

if(TestAck()!=MT_DATA_ACK) return 1//ACK

}

Stop()//I2C停止

Delayms(100)//延时等EEPROM写完

return 0

}

/************************************************

*函数名称: uint8 i2c_Read_Num_24c64(uint8 *Wdata,uint8 num,uint8 RomAddress)

*入口参数: uint8 *Wdata,数据指针;uint8 num,写入的数据个数;uint8 RomAddress,ROM地址

*出口参数: uint8,返回0:写成功返回非0:写失败

*函数功能: I2C总线读N个字节24c64

*创建时间: 2009-09-24 eleShrimp

*修改说明:

/************************************************/

uint8 i2c_Read_Num_24c64(uint8 *Wdata,uint8 num,uint16 RomAddress)

{

uint8 temp,i

Start()//I2C启动

Wait()

if (TestAck()!=START) return 1//ACK

Write8Bit(wr_24c64_add)//写I2C从器件地址和写方式

Wait()

if(TestAck()!=MT_SLA_ACK) return 1//ACK

Write8Bit((uint8)(RomAddress>>8))//写24c64的高8位ROM地址

Wait()

if(TestAck()!=MT_DATA_ACK) return 1//ACK

Write8Bit((uint8)(RomAddress))//写24c64的低8位ROM地址

Wait()

if (TestAck()!=MT_DATA_ACK) return 1

Start()//I2C重新启动

Wait()

if (TestAck()!=RE_START) return 1

Write8Bit(rd_24c64_add)//写I2C从器件地址和读方式

Wait()

if(TestAck()!=MR_SLA_ACK) return 1//ACK

Twi()//启动主I2C读方式

for(i=0i<num-1i++)

{

SetAck()

Wait()

if(TestAck()!=MR_DATA_ACK) return 1//NOACK

Wdata[i]=TWDR//读取I2C接收数据

}

SetNoAck()

Wait()

if(TestAck()!=MR_DATA_NOACK) return 1//NOACK

Wdata[i]=TWDR//读取I2C接收数据

Stop()//I2C停止

return 0

}

/************************************************

*函数名称: void i2c_init(void)

*入口参数: 无

*出口参数: 无

*函数功能: I2C初始化

*创建时间: 2009-09-24 eleShrimp

*修改说明:

/************************************************/

void i2c_init(void)

{

TWBR=24

TWSR=00

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11052168.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存