?? i2c_fun.c
字號:
#define I2C_FUN_GLOBAL
#include <stdio.h>
#include <stdlib.h>
#include "string.h"
#include "I2C_test.h"
#include "fLib.h"
#include "I2C.h" //library
//#define DEBUG
#define TOKEN_MAX 20
#define TOKEN_LEN 10
int substring(int **argv, char * string, char * char_list)
{
int i, j;
char token[0x30];
char c;
int c_num = 0;
int first_time =1;
int num_in_ptr;
while ((c = *char_list) != '\0')
{
token[c_num] = c;
c_num ++;
char_list ++;
}
if (c_num == 0)
return 0;
i = 0;
while ((c = *string) != '\0')
{
if (first_time) {
argv[i] = string;
num_in_ptr = 0;
first_time = 0;
}
for (j = 0; j < c_num; j ++) {
if (c == token[j]) {
if (num_in_ptr != 0)
i ++;
first_time = 1;
break;
}
}
num_in_ptr ++;
string ++;
}
// last one
if (num_in_ptr != 0)
i ++;
return i;
}
#define I2C_MAX_FREQ (50 * 1024)//(100 * 1024)
extern unsigned int PMU_get_pclk(void);
void I2C_init(void)
{
UINT32 i;
UINT32 SCLout;
//setting PCLK clock cycles
// fLib_I2C_SetTGSR(I2C_GSR_Value,I2C_TSR_Value);
//set clock divider
SCLout = PMU_get_pclk() /10; // PCLK must 10 times of SCLout
if (SCLout > I2C_MAX_FREQ)
SCLout = I2C_MAX_FREQ; // max. clock is 400KHz
// SCLout = PCLK/((2*i - GSR + 1) * 2)
// ==> i = (PCLK/SCLout + GSR - 1 + 1)/2
i = (((PMU_get_pclk()+ SCLout - 1) / SCLout) +
((I2C_GSR_Value & (BIT12 | BIT11 | BIT10)) >> 10) -
1 + 1 )/2;
if (i >= BIT10) {
printf("Pclk is to fast to form i2c clock, exit \n");
return;
}
fLib_I2C_SetClockdiv(i);
}
// --------------------------------------------------------------------
// input
// time_out ==>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -