- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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)