原子哥移植了你的摄像头代码,在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操作应该不会有错的。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
改动的有:
#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楼】正点原子:
---------------------------------
就改了这些基本操作
一周热门 更多>