紀念我終於把cypress的iic通訊弄出來了

2021-07-24 22:52:18 字數 1110 閱讀 1558

占個坑,有空了把經驗整理下來。

另外 做賽普拉斯**的fae是真辣雞!

/************分割線11.29更新**************/

void sendbyte(uint8_t c) 

sda = 1;//釋放sda匯流排

//sda_in;

delay_nus(15);//匯流排保持時間

delay_nus(15);

scl = 1;//給高電平時鐘訊號

delay_nus(5);

sda = 0;//手動給ack訊號tat!

delay_nus(15);

delay_nus(15); //less for the ack check

scl = 0;

delay_nus(15);

}

目前是用軟體模擬io時序解決的,我試過很多寫iic的函式,都是在寫入八位資料之後把sda訊號拉高接收ack訊號的時候發生錯誤波形,用示波器抓scl訊號都不正常,就好像scl線和其他什麼東西連到一起了,不能實時相應拉高訊號。

而且時序正常可以採集到正確的資料以後,還會出現每幾秒鐘採集到0x08、和 0xff的現象。抓到的波形如圖:

紅線標出來的位置sda被拉低,但是scl訊號沒有高電平,我收到的資料應該是0x11,結果變成了0x08。

最後乙個時鐘不見了,導致後面的一幀資料直接被nack訊號終結掉,反回了一幀0xff。

**這個問題我用上面的**解決掉了,辦法就是在sda拉高之後,給乙個scl高電平訊號。

雖然問題解決了,但是還不知道具體原理。

記錄一下。**

懷疑可能是cypress的iic協議內sda和scl訊號相互關聯。

因為手冊要求以固定頻率讀取。我現在的頻率大概只有10k。

這個問題稍後下一版pcb換io口或者試用rl78的硬體iica功能的時候再看一下。

目前採集一幀資料大概要1.3ms 相對來說比較費時。

紀念我的失業時段

從去年12月份開始,一直沒有上班,剛好這段時間有空,把婚給結了。也算是這段時間沒有白費吧,呵呵。這段時間以來開始正兒八經的找工作了,之前也是想了很久,也思考了很就,總結了這幾年來的工作情況,自己的得與失,也算是對自己的乙份交代吧。而且也有想法想自己幹,但是貌似沒有什麼方向,所以目前還是找工作,在自己...

20120925 紀念我的奶奶

今天中午我還在吃飯的時候,老婆打 說奶奶快不行了。而等吃完飯我再打過去的時候,卻被告知我的奶奶已經去世,時間是2012年9月25日11點55分左右。自從7月初奶奶半癱睡倒,到現在快3個月。說長不長,說短不短。昨晚回家,我看媽媽喂奶奶吃飯的樣子就覺得不對勁,還和我爸說看今天情況,沒想到竟然會那麼快。奶...

我終於把C 多檔案程式設計理解透徹了

2 多檔案的編譯 稍微大一點的專案都不會是單個檔案的,多檔案的好處實在太多,模組開發 分工協作 復用 結構清晰 模組更新 不細扯,直接梳理一下c 源 的檔案型別 多檔案編譯。c 程式一般分三類檔案 標頭檔案的存在是為了聯絡多個原始檔,是原始檔之間的介面。c 與c一樣,要求先宣告後使用,可是編譯的時候...