OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5730|回复: 11

求助各位大神,SCCB为什么没有应答信号???

[复制链接]

4

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2014-7-21
在线时间
10 小时
发表于 2014-8-9 21:18:35 | 显示全部楼层 |阅读模式
5金钱
//*********************************
//±????ò??SCCB???????????ú??
//??×÷??????2014.07.22
//********************
#include "SCCB.h"

//********************************************
//????×÷??????????SCCB??I/O????
//????????void SCCB_Init(void)
//·?????????
//********************************************
void SCCB_Init(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C0);//????I2C0???±??
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);//????I2C0???????????±??
GPIOPinConfigure(GPIO_PB2_I2C0SCL);//????PB2??SCL
GPIOPinConfigure(GPIO_PB3_I2C0SDA);//????PB3??SDL
//GPIOPinTypeI2C(GPIO_PORTB_BASE,GPIO_PIN_2|GPIO_PIN_3);//????PB2??PB3???????à??
GPIOPinTypeI2CSCL(GPIO_PORTB_BASE, GPIO_PIN_2);
  GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_3);
HWREG(I2C0_BASE + I2C_O_MCR) |= 0x01;

GPIOPinWrite(GPIO_PORTB_BASE,GPIO_PIN_2,GPIO_PIN_2);//????????

GPIOPinWrite(GPIO_PORTB_BASE,GPIO_PIN_3,GPIO_PIN_3);//
SCCB_SDA_OUT();//?è??SDA??????????
}
//**********************************************
//SCCB????????
//?±?±?????????±?ò,??????????????,??SCCB????????
//???¤??×?????,SDA??SCL?ù????????
//**********************************************
void SCCB_Start(void)
{
    SCCB_SDA1;     //????????????   
    SCCB_SCL1;    //???±?????????±?ò??????????????
    delay_Nus(50);  
    SCCB_SDA0;
    delay_Nus(50);  
    SCCB_SCL0;    //??????????????????????×÷????±???  
}
//***********************************************
//SCCB????????
//?±?±?????????±?ò,??????????????,??SCCB????????
//????×?????,SDA,SCL?ù????????
//***********************************************
void SCCB_Stop(void)
{
    SCCB_SDA0;
    delay_Nus(50);  
    SCCB_SCL1;
    delay_Nus(50); 
    SCCB_SDA1;
    delay_Nus(50);

//**********************************************
//?ú?úNA????
//**********************************************
void SCCB_No_Ack(void)
{
delay_Nus(50);
SCCB_SDA1;
SCCB_SCL1;
delay_Nus(50);
SCCB_SCL0;
delay_Nus(50);
SCCB_SDA0;
delay_Nus(50);
}
void SCCB_Ack(void)
{
SCCB_SDA_OUT();
  SCCB_SDA1;
  delay_Nus(50);
  SCCB_SCL1;
  delay_Nus(50);
SCCB_SCL0;
  delay_Nus(50);
  SCCB_SDA1;

}
//*********************************************
//SCCB,????????×???
//·?????:0,????;1,?§°?. 
//*********************************************
uint8_t SCCB_WR_Byte(uint8_t dat)
{
uint8_t j,res;  
for(j=0;j<8;j++) //???·8??·???????
{
if(dat&0x80)SCCB_SDA1;
else SCCB_SDA0;
dat<<=1;
delay_Nus(50);
SCCB_SCL1;
delay_Nus(50);
SCCB_SCL0;   
}  
SCCB_SDA_IN(); //?è??SDA?????? 
delay_Nus(50);
SCCB_SCL1; //??????????,????????·?·???????
delay_Nus(50);
if(SCCB_READ_SDA)res=1;  //SDA=1·????§°???·???1
else res=0;         //SDA=0·?????????·???0
SCCB_SCL0;  
SCCB_SDA_OUT(); //?è??SDA??????    
return res;  
}  
//****************************************************
//SCCB ????????×???
//??SCL????????,????????
//·?????:??????????
//****************************************************
uint8_t SCCB_RD_Byte(void)
{
uint8_t temp=0,j;    
SCCB_SDA_IN(); //?è??SDA??????  
for(j=8;j>0;j--) //???·8??????????
{      
delay_Nus(50);
SCCB_SCL1;
temp=temp<<1;
if(SCCB_READ_SDA)temp++;   
delay_Nus(50);
SCCB_SCL0;
}
SCCB_SDA_OUT(); //?è??SDA??????    
return temp;
}
/***************************************************************************
??    ????unsigned char WrCmos7670(unsigned char regID, unsigned char regDat)
??    ?????òCMOS???¨?????÷??????
??????????regID  ???¨?????÷???·
          regDat ?????????¨?????÷???? 
??????????1    ????????
          0    ?????§°?
??    ?÷??
?÷??·?·¨??m=WrCmos7670(0x3a,0x04);
***************************************************************************/
uint8_t WrCmos7670(uint8_t reg, uint8_t data)
{
uint8_t res=0;
SCCB_Start(); //????SCCB????
if(SCCB_WR_Byte(SCCB_ID))res=1; //???÷??ID  
delay_Nus(100);
  if(SCCB_WR_Byte(reg))res=1; //???????÷???·  
delay_Nus(100);
  if(SCCB_WR_Byte(data))res=1; //??????  
  SCCB_Stop();  
  return res;
}  

uint8_t rdCmos7670Reg(uint8_t reg)//???????÷
{
uint8_t val=0;
SCCB_Start(); //????SCCB????
SCCB_WR_Byte(SCCB_ID); //???÷??ID  
delay_Nus(100);  
  SCCB_WR_Byte(reg); //???????÷???·  
delay_Nus(100);  
SCCB_Stop();   
delay_Nus(100);   
//?è???????÷???·?ó????????
SCCB_Start();
SCCB_WR_Byte(SCCB_ID|0X01); //·??????ü??  
delay_Nus(100);
  val=SCCB_RD_Byte(); //????????
  SCCB_No_Ack();
  SCCB_Stop();
  return val;
}






正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-9 22:55:02 | 显示全部楼层
慢慢调试,先确定硬件没问题.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2014-7-21
在线时间
10 小时
 楼主| 发表于 2014-8-10 08:42:11 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
硬件可以确定没问题,只是软件不知道问题出现在哪,求原子哥帮忙看看呗,,
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-10 23:24:27 | 显示全部楼层
回复【3楼】zsy3830:
---------------------------------
看不出什么问题,不好意思.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

21

主题

134

帖子

0

精华

高级会员

Rank: 4

积分
624
金钱
624
注册时间
2014-11-11
在线时间
161 小时
发表于 2014-11-29 12:41:13 | 显示全部楼层
回复【3楼】zsy3830:
---------------------------------
请问老兄解决了吗    我也遇到这样的问题  不知道怎么解决
回复

使用道具 举报

9

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
164
金钱
164
注册时间
2015-8-27
在线时间
22 小时
发表于 2015-9-21 17:23:04 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
我想问一下,战舰的F103为什么不用I2C,而是用GPIO去模拟SCCB?我用I2C做SCCB接口,结果读出来的ID号总是0xFFFF,是不是I2C不能用作SCCB接口啊?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-21 22:52:37 | 显示全部楼层
回复【6楼】wangyueming:
---------------------------------
硬件IIC??
sccb和标准IIC是有区别的...无法用硬件IIC
另外,硬件IICbug多多,不屑用
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

9

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
164
金钱
164
注册时间
2015-8-27
在线时间
22 小时
发表于 2015-9-22 10:01:32 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
好的,多谢原子,我现在正在研究SCCB呢,还是像你学习,采用GPIO模拟SCCB接口吧。
回复

使用道具 举报

9

主题

53

帖子

0

精华

初级会员

Rank: 2

积分
164
金钱
164
注册时间
2015-8-27
在线时间
22 小时
发表于 2015-10-12 14:37:30 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
现在遇到的问题是SCCB接收不到ov2640返回的Ack信号,SDA读到的一直是0,不知道怎么回事。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-10-12 22:55:21 | 显示全部楼层
回复【9楼】wangyueming:
---------------------------------
看看你IO配置是否正常.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2017-9-15
在线时间
36 小时
发表于 2017-11-29 15:38:25 | 显示全部楼层
请问这个问题最后怎么解决的啊??
回复

使用道具 举报

7

主题

50

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
216
金钱
216
注册时间
2016-2-24
在线时间
39 小时
发表于 2017-12-5 15:55:03 | 显示全部楼层
ov7670在配套战舰V3已经成功。要移植到其他mcu,能不能省去设置sccb寄存器,sccb真的是太难成功了
@正点原子
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 20:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表