微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 实习工作小结第一天

实习工作小结第一天

时间:10-02 整理:3721RD 点击:
  今天的主要任务是阅读代码,印象最深刻的收获就是看懂了 I2C 总线的协议:当时资料上的总结如下:
  1、I2C总线是一种只使用两根线进行通信的机制,一根线输入时钟SCK,一根线传输数据或是地址 SDA
  2、I2C协议规定,每次传输的数据都是8位的,并且必须在数据/ 地址线空闲的时候传输(空闲我理解为低电平!)
  3、I2C协议规定,当SCK为高电平的时候,数据 /地址线无法传输数据,当SDA下降沿的时候,作为数据传输的起始信号;当SDA上升沿的时候,作为数据传输的停止信号!
  4、I2C协议规定,每传输完一个字节的数据,接收器都必须要发送一个应答信号。作为应答器的一方要在第九个时钟周期将SDA信号拉低。(但是,当主器件作为应答方的时候,有时候可以不发送应答信号,但是在比如连续接收的时候,还是要的)
这样一来,就可以推测出I2C数据收发的一些通用的代码了,如下:
I2C数据接收代码:
Read_byte(){
  unsigned char i,k;
  SCK = 0;  
  delay();//空操作
  SDA = 1;
  delay();
  for(i = 0; i < 8; i++){
    SCK = 1;
    delay();
    k = (k<<1) | SDA;
    delay();
    SCK = 0;
    delay();
  }
}
I2C数据发送代码
Write_type(unsigned char data){
  unsigned char tempData;
  tempData = data;
  for(i = 0; i < 8; i++){
    tempData = tempData<<1;
    SCK = 0;
    delay();
    ADS = CY;//CY是移位后,被移除的那一位
    delay();
    SCK = 1;
    delay();
  }
}
    这其中,空操作的目的是让数据线和时钟信号线上的电平信号稳定。在这里没有考虑应答信号,这只是一个读/写操作,并不是完整的数据传输流程,但是对于单字节的读/ 写,应该可以在功能上满足。
    除此之外,就是读了其他的芯片如24C08,74HC595等的芯片说明书。怎么说呢,感觉还是没有把握到阅读芯片说明书的要诀!主要是参照实际编写的代码,对说明书有了一个印象。只是这些说明书都是中文的,感觉上编写的时候都比较匆忙!对于一些细节上的东西还是写的不是很清楚,另外还有一些是经验性的描述。但是不管怎么说,今天还是很有收获的,希望日后能够不断进步!
    PS:本人现在大三,在嵌入式领域只能算是一个刚刚看见门槛的小学生,上面的写的东西大部分是我看的资料,也有一些是我的想法。如果您不小心点开了,又不幸看完了,那么我还真是感激不尽!当然,如果您愿意留下只言片语,或是交流,或是指正,鄙人更是感激万分!
     末学后进在这里,希望与大家一起进步,成长!

加油

我今年刚毕业,一起加油啊!

小编有没有spi的呀?

还没有到那个底部呢!不够有时间我会看的,到时候分享啊!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top