Fw: [請益] 使用I2C的I/O使用一定要用提升電阻嗎?
※ [本文轉錄自 Electronics 看板 #1FsjVVOi ]
作者: Deltaguita (貝纳頌) 看板: Electronics
標題: [請益] 使用I2C的I/O使用一定要用open drain嗎?
時間: Fri Jun 15 14:36:11 2012
請問使用I2C作為資料傳輸介面可以不使用提升電阻嗎?
小弟目前用的c8051f340的I/O有提供推挽跟開集極兩種選擇
8051為master
sencer為slave
平時待機使用開集極I/O
純輸出我用推挽,純輸入我用開集極
因為I2C的SDA是雙向的,所以我交替切換輸出方式
Master端在8th clock 前使用推挽 8th clock後使用開集極
請問這樣可行嗎?
P.S
在使用SPI時 所以我是這樣做的
這顆IC在push pull時 輸出很強 slave端會無法pull dowm這隻腳位
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.251.222.115
※ 編輯: Deltaguita 來自: 60.251.222.115 (06/15 14:38)
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: Deltaguita (60.251.222.115), 時間: 06/19/2012 11:58:48
→
06/19 12:49, , 1F
06/19 12:49, 1F
→
06/19 13:57, , 2F
06/19 13:57, 2F
推
06/19 21:22, , 3F
06/19 21:22, 3F
→
06/19 23:47, , 4F
06/19 23:47, 4F
→
06/20 00:10, , 5F
06/20 00:10, 5F
→
06/20 09:38, , 6F
06/20 09:38, 6F
→
06/20 09:39, , 7F
06/20 09:39, 7F
→
06/20 09:41, , 8F
06/20 09:41, 8F
謝謝各位前輩 小弟修正一下處理的方式
*****************
1 Master & 1 slave
若以M端去寫入S端
*****************
1.SCK&SDA為 open drain
(開始傳送)
2.SDA在8th CLK前為push pull 9th CLK時為open drain 用以確ACK
3.SCK在9th CLK前為push pull 10th CLK時轉為open drain
這邊想請教是先進入10th CLK再轉態open drain
還是先轉態為open drain 再進入10th CLK比較OK?
4.SCK=1;
5.while(!CLK); // CLK Sync
以上是以Master 端來輸出CLK的想法
如果今天是由slave 端來輸出CLK 那我就沒輒了@@"
※ 編輯: Deltaguita 來自: 60.251.222.115 (06/20 14:12)
※ 編輯: Deltaguita 來自: 60.251.222.115 (06/20 14:13)
※ 編輯: Deltaguita 來自: 60.251.222.115 (06/20 14:16)
→
06/20 21:31, , 9F
06/20 21:31, 9F
→
06/20 21:32, , 10F
06/20 21:32, 10F
→
06/20 21:33, , 11F
06/20 21:33, 11F
→
06/21 00:05, , 12F
06/21 00:05, 12F
→
06/21 00:09, , 13F
06/21 00:09, 13F
→
06/21 10:01, , 14F
06/21 10:01, 14F
→
06/21 10:06, , 15F
06/21 10:06, 15F
→
06/21 10:06, , 16F
06/21 10:06, 16F
→
06/21 10:12, , 17F
06/21 10:12, 17F
→
06/21 10:12, , 18F
06/21 10:12, 18F
報告前輩:
說練功也不是,因為小弟想靠軟體達成我要的功能,這樣以後轉換其他51BASE平台的時候
可以無痛轉換
10th CLK 這邊我有點說錯了 是在9th~10th 之間會有一個CLK sync
這邊我有一點搞不清楚是Slave把SDA 拉為LOW 還是單純Master等待而已?
假設今天I2C是由Slave端去觸發Master,也是由Master端送出CLK嗎?
※ 編輯: Deltaguita 來自: 60.251.222.115 (06/21 14:42)
※ 編輯: Deltaguita 來自: 60.251.222.115 (06/21 14:55)
→
06/21 16:14, , 19F
06/21 16:14, 19F
→
06/21 16:16, , 20F
06/21 16:16, 20F
→
06/21 16:22, , 21F
06/21 16:22, 21F
→
06/21 16:23, , 22F
06/21 16:23, 22F
→
06/21 16:24, , 23F
06/21 16:24, 23F
→
06/21 16:32, , 24F
06/21 16:32, 24F
→
06/21 16:44, , 25F
06/21 16:44, 25F
→
06/21 16:51, , 26F
06/21 16:51, 26F
TO前輩:
所以說我可以不用去管SYNC 直接硬幹Slave端嗎?
我的SPI 跟I2C I/O是分開的
因為OrCAD很貴 目前還沒有畫電路圖XD
※ 編輯: Deltaguita 來自: 60.251.222.115 (06/21 17:30)
→
06/21 17:57, , 27F
06/21 17:57, 27F
→
06/21 18:21, , 28F
06/21 18:21, 28F
TO兩位前輩:
我有接電腦的LA可以紀錄波形
這幾天我還在弄一個SPI介面的RF
I2C的部分原廠給的DEMO CODE 要編譯一直都還有問題(太多要定義的沒交代)
可能要等到下禮拜才有半法正式測試
到時候在麻煩你們了Q_Q
※ 編輯: Deltaguita 來自: 60.251.222.115 (06/21 18:30)
→
06/22 01:02, , 29F
06/22 01:02, 29F
→
06/22 01:02, , 30F
06/22 01:02, 30F
→
06/22 01:03, , 31F
06/22 01:03, 31F
→
06/22 01:05, , 32F
06/22 01:05, 32F
→
06/22 01:05, , 33F
06/22 01:05, 33F
proach教訓的是
小弟資質不是很好,過去也一直以為用8051做鍵盤一定要用提升電阻
直到看到網路上一些前輩不吝嗇的分享才知道原來鍵盤掃描不需要提升電組也可以
我就是菜逼八才會來這裡問人阿Q_Q
另外CODE的問題 是用來測試一顆設計中的IC
主要是一些define沒有交代清楚
例如說給了一段CODE 其中在程式引用到inline_ptr這個變數7次
可是這個變數並沒有被定義 也沒有任何一段CODE有去給予他初值
結果D house的回覆是:
Search_parameter()以及StrToInt()是用來擷取由Hyper Terminal輸入的參數值
原始的程式是用command shell來操作的
如果貴公司要測試, 直接指定參數值即可
以AP2010_Set_Frame()為例
if( Search_parameter() )
{
Frame = ( unsigned char )StrToInt( inline_ptr );
}
else
{
printf( "\n\rparameter errror!" );
return;
}
原本是用來取得參數Frame
可以直接指定參數 Frame = 0x01;
再由I2C送出
我手上的IC 是下到第2次的板本 每次的版本參數都有點不太一樣
原廠沒說 天知 地知 proach知而已...
※ 編輯: Deltaguita 來自: 114.25.126.198 (06/22 02:59)
→
06/22 12:53, , 34F
06/22 12:53, 34F
→
06/22 12:54, , 35F
06/22 12:54, 35F
→
06/22 12:55, , 36F
06/22 12:55, 36F
→
06/22 12:56, , 37F
06/22 12:56, 37F
→
06/22 12:56, , 38F
06/22 12:56, 38F
謝謝前輩:
雖然我還沒實際RUN過 但是基本的I2C傳輸我想應該沒有問題啦 o.oa
到現在一直都沒有真正有經驗的人可以教我,都要靠自己來摸索,
手頭上又一堆事情
要自己選CHIP 、自己找儀器、自己學各種介面
還要搞IR HDMI-CEC USB
很多東西懵懵懂懂...
所以很容易遇到很多人看起來覺得是很蠢的問題,
如果讓您見笑 真的很不好意思
※ 編輯: Deltaguita 來自: 60.251.222.115 (06/22 16:10)
※ 編輯: Deltaguita 來自: 114.25.126.198 (06/22 22:05)
推
06/25 14:43, , 39F
06/25 14:43, 39F
→
06/25 14:44, , 40F
06/25 14:44, 40F
推
07/01 23:44, , 41F
07/01 23:44, 41F
→
07/01 23:46, , 42F
07/01 23:46, 42F
→
07/01 23:50, , 43F
07/01 23:50, 43F
推
07/02 00:22, , 44F
07/02 00:22, 44F
對吼 感謝前輩們的提醒!
果然還是得加 因為Slvae 端沒有推挽輸出...
※ 編輯: Deltaguita 來自: 60.251.222.115 (07/12 14:14)
ASM 近期熱門文章
PTT數位生活區 即時熱門文章