看板 Electronics 關於我們 聯絡資訊
謝謝KOBE大大以及各位的支持,小弟感激不盡。 看了您的程式碼後,有一些問題想要請教一下您。 void swi2c_START(int delaytime)這段實作中 sda_set()的實作怎麼寫? 我看得懂虛擬碼,要把sda設為high,但怎麼設呢?是直接寫LATCbits.LAT4 = 1嗎? 同理,clear要怎麼清除呢?也是直接LAT設0嗎? 因為我看spec,要設定為MSSP模式必須把TRIS設為1(input),直接動LAT不是沒有用嗎? 另外,當我把SSP1CON2中的SEN = 1,效果是否就等同於這段swi2c_START實作? 在void swi2c_WRITE(int msg)裡,我看得懂這段程式碼,但沒有把要傳送的資料給 SSP1BUF,PIC有辦法送嗎? 請您指點迷津,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.26.157 ※ 文章網址: https://www.ptt.cc/bbs/Electronics/M.1496198020.A.08C.html
TWkobe: 你的理解沒錯 通常官方libs有個pin define 05/31 16:40
TWkobe: 通常會幫你弄好很多的macro 可以設定某個腳為什麼樣的態 05/31 16:42
TWkobe: 使用i2c前正確的設定好各個腳的態後, 再賦值給相對應的pin 05/31 16:42
TWkobe: 為0或1即可 05/31 16:43
TWkobe: 然後有些你說的register名稱 我沒用過pic不清楚 05/31 16:44
TWkobe: 還有傳給SSP1BUF我猜那是硬體i2c用的data buffer, 原理大 05/31 16:44
TWkobe: 概就是要將傳送的資料先寫入至此buffer, 硬體會自動將裡面 05/31 16:45
TWkobe: data再行傳輸出去, 是比較穩當保險的做法 05/31 16:46
TWkobe: 至於用software simulate的i2c就是直接控制腳來傳送 05/31 16:46
TWkobe: 所以運作原理跟官方用的硬體i2c當然不同 05/31 16:47
TWkobe: 我只能幫到此, 因為我沒用過這系列mcu就是了XD 05/31 16:48
ilovepachaya: TWkobe 讓我尊稱您為I2C王 05/31 17:22
nova06091: god of I2C!!!! 06/01 11:43
fxp87117: 本版I2C王誕生了... 06/02 19:37
maxwel1113: 推大善人 06/02 19:41
yudofu: http://tinyurl.com/yad24ljq 這裡有教你如何用I2C跟SPI 06/02 22:33
yudofu: 讀且EEPROM的application note 06/02 22:34
yudofu: http://tinyurl.com/y8sk753o 這裡有I2C的source code 06/02 22:34
yudofu: 奇怪,人家現成寫好好你送你不要、要從protocol開始硬幹。 06/02 22:35
yudofu: 我們是社會人士,不是培養實力的學生,有問題先上網站找文 06/02 22:36
yudofu: 件是基本常識吧?先趕快copy回來加進去改再說。 06/02 22:36
scarofwind: 直接call vendor 0rz 06/03 16:49
Williamette: King of I2C 請受小弟一拜 06/04 19:08
yugi2567: 加油好嗎 真的 06/04 21:47