IIC驱动 IO模拟.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
IIC驱动 IO模拟

QPSK STV0903 TUNER STV6110 驱动设计 IIC 理论 MEGA128 模拟IIC时序 控制QPSK 中的STV0903 STV6110 STV0903 STV6110 连接图 IIC时序理论 先看下STV0903写时序图 1)起总线 先将SCL、SDA拉高,然后维持SCL为高先将SDA拉低 参考代码如下: void Start(void) { SBI(PORTD,SAA7113_DATA); SBI(PORTD,SAA7113_CLK); IIC_delay(); CBI(PORTD,SAA7113_DATA); IIC_delay(); CBI(PORTD,SAA7113_CLK); IIC_delay(); } 2)停总线 先将SCL、SDA拉低,然后先拉高SCL,维持SCL为高时拉高SDA 参考代码: void Stop(void) { CBI(PORTD,SAA7113_DATA); CBI(PORTD,SAA7113_CLK); IIC_delay(); SBI(PORTD,SAA7113_CLK); IIC_delay(); SBI(PORTD,SAA7113_DATA); IIC_delay(); } 3)写总线 在写总线时将SDA设置为输出,参考代码: void write_byte(unsigned char data) { uchar m,tmp; SBI(SAA7113_DDR,SAA7113_DATA); for(m = 0; m 8; m++) { if(data 0x80) SBI(PORTD,SAA7113_DATA); else CBI(PORTD,SAA7113_DATA); IIC_delay(); SBI(PORTD,SAA7113_CLK); IIC_delay(); data = data1; CBI(PORTD,SAA7113_CLK); } IIC_delay(); saa7113_ack(); IIC_delay(); } 4)应答 应答由被控制芯片回应过来,在此时SDA应该设置为输入等待ACK, 在CLK第九个脉冲时,CLK为高电平,而SDA为一个低电平在表示收到器件的一个ACK应答。。 参考代码: void saa7113_ack() { uchar tmp,m; CBI(DDRD,SAA7113_DATA); SBI(PORTD,SAA7113_CLK); for(m=0;m10;m++) { IIC_delay(); tmp = PIND; tmp =0x02; if(tmp == 0) break; } CBI(PORTD,SAA7113_CLK); SBI(DDRD,SAA7113_DATA); } 5)读时序 读芯片的数据时SDA应该设置为输入, 参考代码: uchar read_byte(void) { uchar m; uchar tmp1 = 0; uchar tmp2 = 0; CBI(SAA7113_DDR,SAA7113_DATA);//输入 for(m = 0; m 8; m++) { CBI(PORTD,SAA7113_CLK); IIC_delay(); SBI(PORTD,SAA7113_CLK); IIC_delay(); tmp1 = PIND; //sda 所在管脚 tmp1 = 0x02; if(0x02 == tmp1) tmp2 = ((tmp2 1) | 1); else tmp2 = ((tmp2 1) 0xfe); CBI(PORTD,SAA7113_CLK); } IIC_delay(); saa7113_ack(); return(tmp2); } STV0903 and STV6110 通过STV0903来控制STV6110 当STV0903能正常读写时,先是打开I2CRPT控制寄存器用示波器测量SCL、SDA引脚观测波形,再测STV6110波形,如果STV6110波形出现脉冲宽度不等,则可能是SCLT 延迟于SCL,通过配置寄存器去掉延迟。如果波形变化比较多出现多种波形,而且脉冲有时与

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档