STM32 V5 source code
guowenxue
2018-02-04 785deec23b4cb1e7c4c4d81eb808f195adb1d98a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/****************************************************************************
*   Copyright: (C)2014 Î人ÁèÔÆÇ¶ÈëʽʵÑéÊÒ www.emblinux.com
*      Author: GuoWenxue<guowenxue@gmail.com> QQ: 281143292
* Description: ·Ü¶·STM32v5¿ª·¢°åGPIOÄ£ÄâÉãÏñÍ·SCCB(Serial Camera Control Bus)µÄʵÏÖ,
*              SCCBµÄ¹¤×÷·½Ê½ÓëI2CÊ®·ÖÀàËÆ£¬ËûʹÓÃOV¹«Ë¾¶¨ÒåµÄ3Ïß´®ÐÐÉãÏñÍ·¿ØÖÆ×ÜÏߣ¬
*              ¿ÉÒÔ¿ØÖƴ󲿷ÖOVϵÁÐͼÐδ«¸ÐÆ÷¡£SCCBÒ²¿ÉÒÔ¹¤×÷ÔÚ2Ïß´®ÐÐģʽ(SIOCÓëSIOD).
*              STM32ÉÏʹÓÃPE2ºÍPE3·Ö±ðÁ¬½ÓOV7670µÄSCCBʱÖÓ¿ÚºÍÊý¾Ý¿Ú,¸Ã´úÂëÖ÷ҪʹÓÃ
*              PE2ºÍPE3µÄGPIO¿ÚÄ£ÄâSCCB(Ò²¼´I2C)×ÜÏßЭÒé
*
*   ChangeLog:
*        °æ±¾ºÅ     ÈÕÆÚ       ×÷Õß      ËµÃ÷
*        V1.0.0  2014.08.25  GuoWenxue   ·¢²¼¸Ã°æ±¾
****************************************************************************/
 
/* CF7670C-V3ÉãÏñÍ·Ä£¿éPin¹Ü½ÅºÍSTM32v5 Á¬½Ó±í:
*| ²Î¿¼<CF7670C-V3 ¼òҪ˵Ã÷.pdf>ºÍ<·Ü¶·STM32¿ª·¢°åV5Ô­Àíͼ.pdf>
*+---------------------------------------+------------------------------+
*|   CF7670C-V3ÉãÏñÍ·Ä£¿éÒý½Å¼°ËµÃ÷      |     STM32¶ËÒý½ÅÁ¬½Ó¼°ËµÃ÷    |
*+---------------------------------------+------------------------------+
*| Pin1-VCC(3.3V,·½º¸Å̱ê¼ÇµÄΪµÚÒ»½Å)   |        3.3V                  |
*| Pin2-GND                              |        GND                   |
*| Pin3-SCL(SCCB_SCL²»´øÉÏÀ­µç×è)        |        PE2                   |
*| Pin4-SDA(SCCB_SDA ´ø4.7KÉÏÀ­µç×è)     |        PE3                   |
*| Pin5-VSYNC(OV7670  Ö¡Í¬²½ÐźÅ)        |        PE4                   |
*| Pin6-HREF(OV7670  ÐÐͬ²½ÐźÅ)         |        NC                    |
*| Pin7-WEN(FIFO(AL422)дÔÊÐí,¸ßµçƽÓÐЧ |        PE5                   |
*| Pin8-XCLK(NC/RE# ¿Õ½Å)                |        NC                    |
*| Pin9-RRST(FIFO¶ÁµØÖ·¸´Î»              |        PE6                   |
*| Pin10-OE#(FIFOÊý¾ÝÊä³öʹÄÜ,µÍµçƽÓÐЧ |        GND                   |
*| Pin11-RCK#(FIFO¶ÁÊý¾ÝʱÖÓ             |        PD12                  |
*| Pin12-GND                             |        GND                   |
*|                                       |                              |
*| Pin13-D0     FIFOÊý¾Ý¿ÚÊä³öBIT0       |        PC0                   |
*| Pin14-D1     FIFOÊý¾Ý¿ÚÊä³öBIT1       |        PC1                   |
*| Pin15-D2     FIFOÊý¾Ý¿ÚÊä³öBIT2       |        PC2                   |
*| Pin16-D3     FIFOÊý¾Ý¿ÚÊä³öBIT3       |        PC3                   |
*| Pin17-D4     FIFOÊý¾Ý¿ÚÊä³öBIT4       |        PC4                   |
*| Pin18-D5     FIFOÊý¾Ý¿ÚÊä³öBIT5       |        PC5                   |
*| Pin19-D6     FIFOÊý¾Ý¿ÚÊä³öBIT6       |        PC6                   |
*| Pin20-D7     FIFOÊý¾Ý¿ÚÊä³öBIT7       |        PC7                   |
*+------------------+-----------------+---------------------------------+
*/
#ifndef __STM32V5_SCCB_H
#define __STM32V5_SCCB_H
#include "stm32f10x.h"
 
/* I2C SCL/SDA Pin operation macro */
#define SCL_H         GPIOE->BSRR = GPIO_Pin_2     
#define SCL_L         GPIOE->BRR  = GPIO_Pin_2 
   
#define SDA_H         GPIOE->BSRR = GPIO_Pin_3     
#define SDA_L         GPIOE->BRR  = GPIO_Pin_3     
 
#define SCL_read      GPIOE->IDR  & GPIO_Pin_2     
#define SDA_read      GPIOE->IDR  & GPIO_Pin_3    
 
void init_sccb_gpio(void);
int I2C_WriteByte(uint16_t WriteAddress , uint8_t SendByte , uint8_t DeviceAddress);
int I2C_ReadByte (uint8_t* pBuffer, uint16_t length, uint8_t ReadAddress, uint8_t DeviceAddress);
 
#endif