1 | void I2CInit(void)
|
2 | {
|
3 | GPIO_InitTypeDef GPIO_InitStructure;
|
4 | I2C_InitTypeDef I2C_InitStructure;
|
5 | NVIC_InitTypeDef NVIC_InitStructure;
|
6 |
|
7 | RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOF, ENABLE);
|
8 | RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2, ENABLE);
|
9 |
|
10 | //RCC_APB1Periph_I2C2
|
11 | //RCC_I2CCLKConfig(RCC_I2C1CLK_SYSCLK);
|
12 |
|
13 | GPIO_PinAFConfig(GPIOF, GPIO_PinSource6, GPIO_AF_1);
|
14 | GPIO_PinAFConfig(GPIOF, GPIO_PinSource7, GPIO_AF_1);
|
15 |
|
16 | //Configure pins: SCL and SDA ------------------
|
17 | GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
|
18 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
19 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
|
20 | GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
|
21 | GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
|
22 | GPIO_Init(GPIOF, &GPIO_InitStructure);
|
23 |
|
24 | I2C_DeInit(I2C2);
|
25 | I2C_Cmd(I2C2, DISABLE);
|
26 | I2C_InitStructure.I2C_AnalogFilter = I2C_AnalogFilter_Enable;
|
27 | I2C_InitStructure.I2C_DigitalFilter = 0x05;
|
28 | I2C_InitStructure.I2C_OwnAddress1 = 0x30;//0x40;
|
29 | I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
|
30 | I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
|
31 | I2C_InitStructure.I2C_Timing =0x00805C87; //100KHz (see page 529 - table 73 in the manual reference)
|
32 | I2C_InitStructure.I2C_AcknowledgedAddress = 0x30;//I2C_AcknowledgedAddress_7bit;
|
33 | I2C_Init(I2C2, &I2C_InitStructure);
|
34 |
|
35 | I2C_AcknowledgeConfig(I2C2, ENABLE);
|
36 |
|
37 | I2C_Cmd(I2C2, ENABLE);
|
38 |
|
39 | I2C_ITConfig(I2C2, I2C_IT_RXI, ENABLE);
|
40 | I2C_ITConfig(I2C2, I2C_IT_TXI, ENABLE);
|
41 | I2C_ITConfig(I2C2, I2C_IT_TCI, ENABLE);
|
42 |
|
43 | NVIC_InitStructure.NVIC_IRQChannel = I2C2_IRQn;
|
44 | NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
45 | NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
|
46 | NVIC_Init(&NVIC_InitStructure);
|
47 | }
|
48 |
|
49 | void I2CSend(void)
|
50 | {
|
51 | I2C_SlaveAddressConfig(I2C2, 0x30);
|
52 |
|
53 | I2C_GenerateSTART(I2C2, ENABLE);
|
54 | //I2C_MasterRequestConfig(I2C2, I2C_Direction_Transmitter);
|
55 |
|
56 | I2C_NumberOfBytesConfig(I2C2, 8);
|
57 |
|
58 | I2C_SendData(I2C2, 0x55);
|
59 |
|
60 | I2C_GenerateSTOP(I2C2, ENABLE);
|
61 | }
|