• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
:::

論壇索引


Board index » All Posts (test838)




Re: I2C SCL 訊號一問
#31
中級會員
中級會員


我剛好弄完 I2C, 我可以跟你確定的是 "不要空接"

我不知道你的示波器如何,但用我的示波器空接量不到訊號,偶爾才有訊號

我這次解決 I2C 的問題是因為我 lib include 錯誤. 我用 \pic30_tools\lib 下的 library link 結果動都不動
我另外 build \pic30_tools\src\peripheral_24F\src\makeplib.bat 後, 再 link 就可以跑了, 程式碼連改都不用改, 無論 EEPRom 或我的 sensor 一下子就完成了

另外 SCL2 跟 SDA2 不需要義為輸出或輸入, I2C 的動作在 SDA 是雙向的, 輸出或輸入均是錯的
根據 phillip 的 datasheet, 在送完8bit clock 後chip 要變反向, release SDA 的控制權, 由 slave 控制
這個動作 Chip 自個兒會處理, 無需你操心

發表於: 2009/2/2 14:24
曾經 狂奔 舞蹈 貪婪的說話, 隨著冷的 濕的 心腐化

個人的休閒小站
歡迎來參觀
http://www.elevior.com
頂部


Re: I2C SCL 訊號一問
#32
中級會員
中級會員


很抱歉~ 我列的程式碼在其上, 下方均有 "...."
意思是有程式碼 忽略沒寫出來
上方的程式碼有 open I2C 的 function, 因為使用前一定要 open, 不然無法用, 在open 後面 即有 idle wait了

SCL 及 SDA 的動作的確怪怪的. 我還在檢查中...

註: 另外, 目前因為在 debug 中, 即使沒有 idle wait, mcu 每一次執行都是一個新的開始, 不會有 i2c task running

發表於: 2009/1/16 15:17
頂部


Re: I2C SCL 訊號一問
#33
中級會員
中級會員


首先非常謝謝 Ryang 的回答

可是, 那個example 似乎差距較大, 要改的東西較多
於是我就到 microchip 下載以下這個 EEPRom 的 example code 完全符合我的 mcu 及 EEPRom
http://ww1.microchip.com/downloads/en ... I2C%20Master%20EEPROM.zip

硬體軟體都接好 compile 好後測試, 依然沒反應

SCL pin 量不到方波, 於是我單步 debug 發現底下的程式碼在執行到 StartI2C2 後, SCL , SDA 同時由 High 變 Low
天啊, I2C 的 start bit 不是 SCL high , SDA low 嗎? 怎麼不符合規定?

MicroChip 的 bug? (心想一定不可能)
應該是我硬體接線哪裡有要注意結果搞錯??
我的母板是用 PIC24F Starter Kit 1, MCU 是 pic24fj256gb106, 拉 PortF 的 Bit4 (SDA, pin 31), Bit5 (SCL,pin 32)到 測試板連接 EEPRom, 二個 PIN 都有 Pull-Ups

實在不知道哪裡有問題, 還請各位多多幫忙

----------------
....
i2cData[0] = (SlaveAddress << 1) | 0; //Device Address & WR111
i2cData[1] = 0x05; //eeprom high address byte
i2cData[2] = 0x40; //eeprom low address byte
i2cData[3] = 0xAC; //data to write
DataSz = 4;

StartI2C2(); // <-- 執行過這一行後就 SCL, SDA 均變 low, 這正常嗎?

IdleI2C2(); // Wait to complete
while( DataSz ) // 寫 0xAC 到 EE
{
MasterWriteI2C2( i2cData[Index++] );
IdleI2C2(); //雖然都 low, 但這裡的 MaserWrite , Idle 均可以過, 完全成功執行完, 沒被 block 住

DataSz--;

// ACKSTAT is 0 when slave acknowledge,
// if 1 then slave has not acknowledge the data.
if( I2C2STATbits.ACKSTAT )
break;
}
....

發表於: 2009/1/15 13:44
頂部


Re: I2C SCL 訊號一問
#34
中級會員
中級會員


以前我用 8051 或其它 mcu 時都自己寫 I2C, 一個bit一個bit的shift進shift出
現在這顆則是只有三個 register , 非常簡單, 全自動化, 但也因此無從 debug 起, 連 CLK 都沒輸出, 波形量不到, 有沒在跑不知道

因此, 我想知道的是...
1. 有沒有什麼動作我漏掉的? 例如 pin 要設 output?

2. 我接上 sensor , 但沒 pull-ups 時 CLK 有出來, 但訊號很奇怪, 是類似三角波(奇怪, 這顆 MCU 一定要接 slave 才有波形?)

3. 我接上 sensor , 且 pull-ups 時卻遇到進 IdleI2C2 這副程式出不來的現象, 好像一直在等什麼

4. 我現在勢必要知道的是 空接(有 pull-ups, 但沒 slave) 時, Master 一直拼命 Write 是不是至少 CLK 要出來? 為什麼它都沒有

發表於: 2009/1/14 10:25
曾經 狂奔 舞蹈 貪婪的說話, 隨著冷的 濕的 心腐化

個人的休閒小站
歡迎來參觀
http://www.elevior.com
頂部


Re: I2C SCL 訊號一問
#35
中級會員
中級會員


有 pull-up , 2.2 K ohm

發表於: 2009/1/14 10:12
曾經 狂奔 舞蹈 貪婪的說話, 隨著冷的 濕的 心腐化

個人的休閒小站
歡迎來參觀
http://www.elevior.com
頂部


I2C SCL 訊號一問
#36
中級會員
中級會員


大家好,

我現在用 PIC24FJ256GB106 MCU, 我要用 I2C 去控制某 sensor, 但目前我先空接 SCL2/SDA2 (有 pull-up)
我試著用 Microchip 的 example code 去 write 訊號出來, 但是, 我在 SCL2 上量測訊號, 示波器卻量不到東西

我的問題是, I2C 在 SCL2/SDA2 未接 slave device 時, 難道 clock 不會有輸出訊號? 一定要有對接時才行? 以下是 microchip 的程式碼

void testI2C(void)
{
unsigned int config2, config1;
unsigned char *wrptr;
unsigned char tx_data[] = {'M','I','C','R','O','C','H','I','P','\0'};

wrptr = tx_data;
/* Baud rate is set for 100 Khz */
config2 = 0x11;

/* Configure I2C for 7 bit address mode */
config1 = (I2C_ON & I2C_IDLE_CON & I2C_CLK_HLD &
I2C_IPMI_DIS & I2C_7BIT_ADD &
I2C_SLW_DIS & I2C_SM_DIS &
I2C_GCALL_DIS & I2C_STR_DIS &
I2C_NACK & I2C_ACK_DIS & I2C_RCV_DIS &
I2C_STOP_DIS & I2C_RESTART_DIS &
I2C_START_DIS);

OpenI2C2(config1,config2);
IdleI2C2();
StartI2C2();

/* Wait till Start sequence is completed */
while(I2C2CONbits.SEN );

//while(1) <-- unmark 這三行作無限輸出測試
//{ <-- unmark 這三行作無限輸出測試
/* Write Slave address and set master for transmission */
MasterWriteI2C2(0xE);

/* Wait till address is transmitted */
while(I2C2STATbits.TBF);
while(I2C2STATbits.ACKSTAT);
//} <-- unmark 這三行作無限輸出測試


/* Transmit string of data */
MasterputsI2C2(wrptr);
StopI2C2();

/* Wait till stop sequence is completed */
while(I2C2CONbits.PEN);
CloseI2C2();

}

發表於: 2009/1/13 17:15
頂部


Re: I2C baudrate 一問
#37
中級會員
中級會員


沒有人知道?

發表於: 2009/1/12 11:20
曾經 狂奔 舞蹈 貪婪的說話, 隨著冷的 濕的 心腐化

個人的休閒小站
歡迎來參觀
http://www.elevior.com
頂部


I2C baudrate 一問
#38
中級會員
中級會員


我現在用 pic24fj256GB106 晶片
我想設定 I2C
但我看不懂 datasheet OSC 的那個圖
所以我想請教

I2C 的 baudrate 公式是 I2CxBRG = ( Fcy/Fscl - Fcy/10,000,000 ) - 1

所以, 當我用 main osc (12MB), 並想設定 I2C 跑在 400KHz時, 我底下這個算法是不是對的 (疑問在 K 是 1024 還是 1000)

#define FOSC 12000000 // <-- 還是 12 * 1024 *1024 ?
#define FCY (FOSC/2)
#define FSCL (400*1000) // <-- 400 KHz 是 400 *1024?
#define I2CXBRG ((FCY/FSCL - FCY/10000000 ) - 1)


I2C1BRG = ((FCY/FSCL - FCY/10000000 ) - 1)

----------------
第二個問題如附圖所示, 我看它的 Peripheral 應該是 32MB/1=32MB, 所以 I2C 所指的 Fosc 是不是該用 32MB , 而非 12MB?

Attach file:



jpg  (0.00 KB)


發表於: 2009/1/9 17:09
頂部


Re: 如何才可以實現自動加入 build number?
#39
中級會員
中級會員


根據 Jason680 的建議, 我昨天不到5分鐘就弄好了, 跑得很好啊



#define VERSION 1.0

//---------------------------------------------------------------------------
void getVersionString(char *buf)
{
sprintf(buf, "%04.2f (%s %s)", VERSION, __DATE__, __TIME__);
}
//---------------------------------------------------------------------------
main()
{
char version[36];
...
getVersionString(version);
...
}

發表於: 2009/1/9 13:02
曾經 狂奔 舞蹈 貪婪的說話, 隨著冷的 濕的 心腐化

個人的休閒小站
歡迎來參觀
http://www.elevior.com
頂部


請問 MCHPUSB 和 WinUSB 有何不同?
#40
中級會員
中級會員


大家好
我在 PIC24F Starter Kit 1 裡面發現有二個 USB 的 example
一個是 MCHPUSB (MicroChip USB)
另一個是 WinUSB
請問這兩個 USB 有什麼不同嗎?
MicroChip USB能相容於現行廣大USB 用戶規格嗎?

發表於: 2009/1/9 11:04
頂部



« 1 2 3 (4) 5 6 »



:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------