摄像头代码移植,SCCB初始化错误

2019-07-21 03:16发布

原子哥移植了你的摄像头代码,在SCCB初始化时候出现了错误,SCCB的SDA和SCL我看普通IO就可以了吧,不用像IIC加上拉电阻吧。
函数是在  SCCB_Init();          //初始化SCCB 的IO口      
  if(SCCB_WR_Reg(0x12,0x80))return 1; //复位SCCB
 这句出错
SCCB_WR_Reg() -->if(SCCB_WR_Byte(SCCB_ID))res=1; //写器件ID -->SCCB_WR_Byte()--> if(SCCB_READ_SDA)res=1;  //SDA=1发送失败,返回1
SCCB_READ_SDA这里读到了1.程序追踪到这就错误返回了初始化错误


原子哥有没有什么好的建议?我移植的战舰板子库函数例程,只是改了pin操作应该不会有错的。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
33条回答
wwjdwy
1楼-- · 2019-07-21 06:22
回复【25楼】wendell.li:
---------------------------------
完全没有解决,也没看到图像啊哥们
wwjdwy
2楼-- · 2019-07-21 08:20
求指点啊
我用带上拉的pin也不行啊,我的导线有20cm
正点原子
3楼-- · 2019-07-21 12:07
估计是你的IO设置问题.
wwjdwy
4楼-- · 2019-07-21 17:26
IO设置,我copy的,只改了pin名字
改动的有:
#define SCCB_SCL_Low     GPIO_ResetBits(GPIOD, GPIO_Pin_1)   //SCL拉低
#define SCCB_SCL_High     GPIO_SetBits(GPIOD, GPIO_Pin_1)    //SCL拉高
#define SCCB_SDA_Low     GPIO_ResetBits(GPIOD, GPIO_Pin_0)  //SDA拉低
#define SCCB_SDA_High     GPIO_SetBits(GPIOD, GPIO_Pin_0)     //SDA拉高
#define SCCB_READ_SDA     GPIO_ReadInputDataBit(GPIOD, GPIO_Pin_0) //输入SDA 

void SCCB_SDA_IN(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

   //使用PD0 D1作为SCCB D0:SDA  D1: SCL
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入       
    GPIO_Init(GPIOD, &GPIO_InitStructure);
}

void SCCB_SDA_OUT(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

   //使用PD0 D1作为SCCB D0:SDA  D1: SCL
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   //推挽输出 
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    
    GPIO_Init(GPIOD, &GPIO_InitStructure);
}回复【3楼】正点原子:
---------------------------------

就改了这些基本操作
wwjdwy
5楼-- · 2019-07-21 20:39
回复【3楼】正点原子:
---------------------------------
void SCCB_Init(void)
{    
    //使用PD0 D1作为SCCB D0:SDA  D1: SCL  
  GPIO_InitTypeDef  GPIO_InitStructure;
 
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);  //使能PD端口时钟

   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;  // 端口配置
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;   //输入
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_SetBits(GPIOD,GPIO_Pin_0);  // 输出高

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;  // 端口配置
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   //输输出
  GPIO_Init(GPIOD, &GPIO_InitStructure);
  GPIO_SetBits(GPIOD,GPIO_Pin_1);  // 输出高
 
SCCB_SDA_OUT();  
}
wwjdwy
6楼-- · 2019-07-21 23:36
回复【3楼】正点原子:
---------------------------------
原子哥啊,有没有什么思路帮我想想能找到问题原因?

一周热门 更多>