2012-03-07 41 views
1

我試圖使用SCB TS-7500的I2C接口,以便將其comunicate到單片機ATmega32的。我想配置雙向鎖定頻率,爲此我需要配置ECONA CAVIUM網絡訪問處理器。我不能在C代碼中配置雙鎖頻率寄存器。我有一個程序名爲i2ctemp.c即時通訊使用它來幫助我。編程在SBC I2C接口用C語言

這是TWI的地址:(0x71000020,& FD)REG = map_phys;時鐘的地址是0x24;然後爲TWI_CLKDIV比特16:8。

我做了這樣的事情:

無效setbitrate(長比特率) {

unsigned bitratediv; 

//Calcule of twi clock divider value 
//Formule is TwiCLockFreq = PCLK /(2*(TwiClockDivider +1)) 

    bitratediv = (unsigned)(PCLK/(2*bitrate)); //PCLK= 1M and bitrate= 50k 

///If bitrate value is less than 16 then do: 

if(bitratediv <= 16) 
    bitratediv = bitrate -1 ; 

//FINALLY assigned the value to the register of the TWICLOCK 

reg[0x24/sizeof(unsigned)] = bitratediv; 

* 我只是想知道如何得到這個註冊 「0X24」,因爲這doesn' t work -------------------> reg [0x24/sizeof(unsigned)] = bitratediv; ** }

謝謝您的幫助

這裏是ECONA CAVIUM的手冊和程序i2ctemp.c (ftp://ftp.embeddedarm.com/ts-arm- SBC/TS-7558-LINUX /樣品/ i2ctemp.c)! (http://www.embeddedarm.com/documentation/third-party/ECONA-CNS21XX-HRM-v.1.8.pdf)!

+0

你真的想標記這個'google-chrome'嗎?我可能會添加'embedded'和'i2c'來獲取讀者。 (對不起,我不知道答案。) – 2012-03-08 00:18:25

+0

如果有人對我的問題,請加我一個評論,以幫助我找到答案的問題....感謝 – 2012-03-09 22:57:18

+0

是谷歌是驚人的相信或不哈哈..但我有一個傢伙...是我的問題是不可理解的?? ...謝謝你的評論...看到亞! – 2012-03-09 23:00:58

回答

2

您還沒有decsribed您的環境,但如果是裸機和你想在地址0x24到設置內存映射寄存器,您可以簡單地這樣做:

*(volatile unsigned int *)0x24 = bitratediv; 

大多數人定義一個宏是這樣的:

#define mmio(reg) (*(volatile unsigned int *)(register)) 

所以,你可以這樣寫:

mmio(0x24) = bitratediv; 

在你的情況,你只需要ŧ o設置該寄存器的前8位,因此類似於:

mmio(0x24) = (mmio(0x24) & 0x00FF) | (bitratediv << 8); 

可能是您要找的。

+0

這就是我所需要的,謝謝你,我是初學者嘿嘿.... – 2012-03-09 23:05:12