智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1332|回复: 9
打印 上一主题 下一主题

ccd救助

[复制链接]

15

主题

115

帖子

0

精华

高级会员

Rank: 4

积分
642
威望
294
贡献
164
兑换币
177
注册时间
2014-4-29
在线时间
92 小时
跳转到指定楼层
1#
发表于 2014-7-29 11:37:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
蓝宙中的部分代码就解释
* Description: SCI0_Init
* Note: Fbus = 40M ---> Bit Rate = 115200
*********************************************************************************************************
*/
void SCI0_Init(void)
{
/*  Init_SCI init code */
  SCI0CR1 = 0x00;
  SCI0SR2 = 0x80;                      /* Switch to the alternative register set */
  SCI0ASR1 = 0x83;                     /* Clear alternative status flags */
  SCI0ACR1 = 0x00;
  SCI0ACR2 = 0x00;
  SCI0SR2 = 0x00;                      /* Switch to the normal register set */
  (void) SCI0SR1;                      /* Reset interrupt request flags */
  SCI0CR2 = 0x00;                      /* Disable error interrupts */
  SCI0BD = 0x16;                       /* Set prescaler bits */
  SCI0CR2 |= (SCI0CR2_TE_MASK | SCI0CR2_RE_MASK); /* Enable transmitter, Enable receiver */
}


/*
*********************************************************************************************************
* Description: SCI0_SendChar
*********************************************************************************************************
*/
uint8_t SCI0_SendChar(uint8_t Chr)
{
  if(SCI0SR1_TDRE == 0) {              /* Is the transmitter empty? */
    return ERR_TXFULL;                 /* If no then error */
  }
  SCI0DRL = (uint8_t)Chr;
  return ERR_OK;                       /* OK */
}


在k60中我们怎样设置
回复

使用道具 举报

1

主题

81

帖子

0

精华

高级会员

Rank: 4

积分
744
威望
384
贡献
222
兑换币
246
注册时间
2014-3-16
在线时间
69 小时
毕业学校
国防科大
2#
发表于 2014-7-29 12:47:37 | 只看该作者
他有完整的例程的, 都不用你管, 你只需要知道是哪几个AD口即可
回复 支持 反对

使用道具 举报

15

主题

115

帖子

0

精华

高级会员

Rank: 4

积分
642
威望
294
贡献
164
兑换币
177
注册时间
2014-4-29
在线时间
92 小时
3#
 楼主| 发表于 2014-7-29 12:48:43 | 只看该作者
chen8782186 发表于 2014-7-29 12:47
他有完整的例程的, 都不用你管, 你只需要知道是哪几个AD口即可

可是我们是龙邱的ccd
回复 支持 反对

使用道具 举报

1

主题

81

帖子

0

精华

高级会员

Rank: 4

积分
744
威望
384
贡献
222
兑换币
246
注册时间
2014-3-16
在线时间
69 小时
毕业学校
国防科大
4#
发表于 2014-7-29 12:49:14 | 只看该作者
一样的 。  
回复 支持 反对

使用道具 举报

15

主题

115

帖子

0

精华

高级会员

Rank: 4

积分
642
威望
294
贡献
164
兑换币
177
注册时间
2014-4-29
在线时间
92 小时
5#
 楼主| 发表于 2014-7-29 12:51:39 | 只看该作者
chen8782186 发表于 2014-7-29 12:49
一样的 。

可是移植不成功,可否指点一二
回复 支持 反对

使用道具 举报

1

主题

81

帖子

0

精华

高级会员

Rank: 4

积分
744
威望
384
贡献
222
兑换币
246
注册时间
2014-3-16
在线时间
69 小时
毕业学校
国防科大
6#
发表于 2014-7-29 12:58:57 | 只看该作者
我自己板子上AD SI CLK 写成你自己的   例程上的都是他们的, 你只需要把AD SI CLK 哪几个口 是你自己用的 程序上改掉就可以了。      
回复 支持 反对

使用道具 举报

15

主题

115

帖子

0

精华

高级会员

Rank: 4

积分
642
威望
294
贡献
164
兑换币
177
注册时间
2014-4-29
在线时间
92 小时
7#
 楼主| 发表于 2014-7-29 13:02:07 | 只看该作者
chen8782186 发表于 2014-7-29 12:58
我自己板子上AD SI CLK 写成你自己的   例程上的都是他们的, 你只需要把AD SI CLK 哪几个口 是你自己用的  ...

谢过
回复 支持 反对

使用道具 举报

15

主题

115

帖子

0

精华

高级会员

Rank: 4

积分
642
威望
294
贡献
164
兑换币
177
注册时间
2014-4-29
在线时间
92 小时
8#
 楼主| 发表于 2014-7-30 10:33:10 | 只看该作者
chen8782186 发表于 2014-7-29 12:58
我自己板子上AD SI CLK 写成你自己的   例程上的都是他们的, 你只需要把AD SI CLK 哪几个口 是你自己用的  ...

大神,请问一下你的ccd时钟是怎么配置的?最好是程序举例啊,多谢
回复 支持 反对

使用道具 举报

1

主题

81

帖子

0

精华

高级会员

Rank: 4

积分
744
威望
384
贡献
222
兑换币
246
注册时间
2014-3-16
在线时间
69 小时
毕业学校
国防科大
9#
发表于 2014-7-30 21:02:15 | 只看该作者

//============================================================================
//函数名称:Startintegration
//函数返回:无
//参数说明:无
//功能概要:初始化CCD第一帧
//============================================================================
void StartIntegration(void)
{
    unsigned char i;

    //CCD_SI_Change();            /* SI  = 1 */
    hw_gpio_set(CCD1_SI_PORT,CCD1_SI_PIN,1);
    delay2;
    //CCD_CLK_Change();           /* CLK = 1 */
    hw_gpio_set(CCD1_CLK_PORT,CCD1_CLK_PIN,1);
    delay2;
    //CCD_SI_Change();            /* SI  = 0 */
    hw_gpio_set(CCD1_SI_PORT,CCD1_SI_PIN,0);
    delay2;
    //CCD_CLK_Change();           /* CLK = 0 */
    hw_gpio_set(CCD1_CLK_PORT,CCD1_CLK_PIN,0);

    for(i=0; i<127; i++)
    {
        delay2;
        delay2;
        //CCD_CLK_Change();       /* CLK = 1 */
        hw_gpio_set(CCD1_CLK_PORT,CCD1_CLK_PIN,1);
        delay2;
        delay2;
        //CCD_CLK_Change();       /* CLK = 0 */
        hw_gpio_set(CCD1_CLK_PORT,CCD1_CLK_PIN,0);
    }
    delay2;
    delay2;
    //CCD_CLK_Change();           /* CLK = 1 */
    hw_gpio_set(CCD1_CLK_PORT,CCD1_CLK_PIN,1);
    delay2;
    delay2;
    //CCD_CLK_Change();           /* CLK = 0 */
    hw_gpio_set(CCD1_CLK_PORT,CCD1_CLK_PIN,0);
}

//============================================================================
//函数名称:ImageCapture
//函数返回:无
//参数说明:uint8 * ImageData CCD数据指针
//功能概要:CCD采集
//============================================================================
void ImageCapture(uint8 * ImageData)
{
    unsigned char i;
    extern uint8 AtemP ;

    //CCD_SI_Change();            /* SI  = 1 */
    hw_gpio_set(CCD1_SI_PORT,CCD1_SI_PIN,1);
    delay2;
    //CCD_CLK_Change();           /* CLK = 1 */
    hw_gpio_set(CCD1_CLK_PORT,CCD1_CLK_PIN,1);
    delay2;
    //CCD_SI_Change();             /* SI  = 0 */
    hw_gpio_set(CCD1_SI_PORT,CCD1_SI_PIN,0);
    delay2;

    //Delay 10us for sample the first pixel
    /**/
    for(i = 0; i < 50; i++)
    {
        delay2;  //200ns
    }

    //Sampling Pixel 1

    *ImageData = hw_adc_once(CCD_1_MoudelNumber,CCD_1_Channel,8);
    ImageData ++ ;
    //CCD_CLK_Change();           /* CLK = 0 */
    hw_gpio_set(CCD1_CLK_PORT,CCD1_CLK_PIN,0);

    for(i=0; i<127; i++)
    {
        delay2;
        delay2;
        //CCD_CLK_Change();       /* CLK = 1 */
        hw_gpio_set(CCD1_CLK_PORT,CCD1_CLK_PIN,1);
        delay2;
        delay2;
        //Sampling Pixel 2~128

       *ImageData = hw_adc_once(CCD_1_MoudelNumber,CCD_1_Channel,8);
        ImageData ++ ;
        //CCD_CLK_Change();       /* CLK = 0 */
        hw_gpio_set(CCD1_CLK_PORT,CCD1_CLK_PIN,0);
    }
    delay2;
    delay2;
    //CCD_CLK_Change();           /* CLK = 1 */
    hw_gpio_set(CCD1_CLK_PORT,CCD1_CLK_PIN,1);
    delay2;
    delay2;
    //CCD_CLK_Change();           /* CLK = 0 */
    hw_gpio_set(CCD1_CLK_PORT,CCD1_CLK_PIN,0);
}

hw_gpio_set(CCD1_CLK_PORT,CCD1_CLK_PIN,0);
uint8 hw_gpio_set(
    uint8 port,  //端口号。由宏定义。
    uint8 pin,   //引脚号。0~31。
    uint8 state  //引脚初始状态。1=高电平,0=低电平
)
{
    //将GPIO端口号转换成端口寄存器组指针
    GPIO_MemMapPtr pt = hw_gpio_get_pt_addr(port);
          
          if (state == 0) //控制为低电平
              GPIO_PDOR_REG(pt) &= ~(1<<pin);
          else            //控制为高电平
              GPIO_PDOR_REG(pt) |= (1<<pin);
          
    return 0;
}

回复 支持 反对

使用道具 举报

15

主题

115

帖子

0

精华

高级会员

Rank: 4

积分
642
威望
294
贡献
164
兑换币
177
注册时间
2014-4-29
在线时间
92 小时
10#
 楼主| 发表于 2014-7-30 21:19:50 | 只看该作者
chen8782186 发表于 2014-7-30 21:02
//============================================================================
//函数名称:Starti ...

谢啦
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-6-18 07:43 , Processed in 0.063786 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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