①I2C 知識點
1.I2C協議:時鐘線、數據線
①空閑狀态 :i2c總線的SCL和SDA信号線同時為高。
②開始信号 :SCL為高,SDA由高到低。
停止信号 :SCL為高,SDA由低到高。
③應答信号 : 發送器每發送一個字節(8bit),就在時鐘脈沖9期間釋放數據線,由接收器反饋一個應答信号。 應答信号為低電平時(有效應答位ACK),表示接收器已經成功接收了該字節。應答信号為高電平時(非應答位NACK),一般表示接收器未成功接收該字節。對于反饋有效應答位ACK的要求:接收器在第9個時鐘脈沖之前(前8個脈沖傳輸8bit數據)的低電平期間将SDA線拉低,并且确保在該時鐘的高電平期間為穩定的低電平。如果接收器是主控器,則在它收到最後一個字節後,發送一個NACK信号,以通知被控發送器結束數據發送,并釋放SDA線,以便主控接收器發送一個停止信号P。
④數據的有效性:I2C總線進行數據傳送時,時鐘信号(SCL)為高電平期間,數據線(SDA)上的數據必須保持穩定。隻有在時鐘線上的信号為低電平期間,數據線上才允許有電平變化(起始信号、停止信号等)。
⑤數據傳輸:在I2C總線上傳送的每一位數據都有一個時鐘脈沖相對應(或同步控制),即在SCL串行時鐘的配合下,在SDA上逐位地串行傳送每一位數據。數據位的傳輸是邊沿觸發。
2.數據線和時鐘線都接高電平(空閑狀态時SDA和SCL都為高)。
3.I2C數據傳送(讀寫都是高位優先)
24C02模拟I2C:
開始、從機地址、寫、從機應答、數據地址、從機應答、數據、應答停止
讀的時候要先有個寫:寫要讀的從機地址和數據地址
②Linux文件編程---打開文件後移動光标
1.使用lseek()函數(在終端下可使用 man 2 lseek 查詢使用方法)
功能:移動光标
參數:lseek(int fd,offset,int whence);
//fd(file discribe)---open()文件後返回的文件描述符。
// offset---相對于函數中下一個參數whence的位置。 向後偏移,-向前偏移。
//whence---SEEK_SET文件頭、SEEK_END文件尾、SEEK_CUR當前位置。
返回值:當lseek執行成功時,它會返回最終以文件起始位置為起點的偏移位置。
2.函數所需頭文件 :#include<sys/types.h>
#include<unistd.h》
例1:光标移動到頭。
int fd;
fd=open("./file0",O_RDWR);
lseek(fd,0,SEEK_SET);
例2:巧用lseek計算文件大小。
int filesize=lseek(fd , 0 ,SEEK_END);
//當lseek執行成功時,它會返回最終以文件起始位置為起點的偏移位置。起點---終點
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!