你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

有谁用STM32驱动过时钟芯片DS12887吗?

[复制链接]
Son_of_Arkham 提问时间:2017-6-23 14:01 /
在用STM32F1 驱动时钟芯片,我直接移植了网上52的例程,但是时钟芯片一直没有工作。
论坛里有人用过这个芯片吗?求教。
收藏 评论14 发布时间:2017-6-23 14:01

举报

14个回答
wenyangzeng 回答时间:2017-6-23 14:21:01
这个芯片内部好像有一个电池,电池坏了就不动了。
Son_of_Arkham 回答时间:2017-6-23 14:26:59
wenyangzeng 发表于 2017-6-23 14:21
这个芯片内部好像有一个电池,电池坏了就不动了。

是刚买的芯片 应该是不至于 吧? 您用过这块芯片吗?
这块芯片是不是给5V供电它自己会工作的?
Son_of_Arkham 回答时间:2017-6-23 14:28:01
wenyangzeng 发表于 2017-6-23 14:21
这个芯片内部好像有一个电池,电池坏了就不动了。

我给了5V供电,不做其他的操作,但是我也不知道怎么判断这块芯片在5V下是不是在工作了。
wenyangzeng 回答时间:2017-6-23 15:40:46
Son_of_Arkham 发表于 2017-6-23 14:28
我给了5V供电,不做其他的操作,但是我也不知道怎么判断这块芯片在5V下是不是在工作了。 ...

这种片子好像是早期PC-8086电脑上使用的,内部那个电池坏了就不走时了。你可以到相关网站下载资料,好像需要对其进行寄存器初始化方可启动RTC
Son_of_Arkham 回答时间:2017-6-23 16:46:06
wenyangzeng 发表于 2017-6-23 15:40
这种片子好像是早期PC-8086电脑上使用的,内部那个电池坏了就不走时了。你可以到相关网站下载资料,好像 ...

我是直接移植了51的,初始化应该是没问题。
wenyangzeng 回答时间:2017-6-23 17:22:34
Son_of_Arkham 发表于 2017-6-23 16:46
我是直接移植了51的,初始化应该是没问题。

http://www.doc88.com/p-310798248947.html

无标题.png

楼主自信心很强的。
anywill 回答时间:2017-6-24 00:05:59
我也有一片这个芯片,它是将一个时钟芯片和一个纽扣电池封装在一起,建议楼主把芯片拆开看清时钟芯片型号后再找对应的文档,
middfat1 回答时间:2017-6-24 00:52:25
887有+3.3V的版本,看清电压才好加电压哦
slotg 回答时间:2017-6-26 00:11:02
DS12887是并口控制的,你将原理图发上来看看。
shuolang126 回答时间:2017-6-26 09:10:38
基本用不到了,使用ST自身的RTC时钟功能就可以实现了,顶多加一个备份电池,这个用在ST上,没有啥优点!
zlk1214 回答时间:2017-9-27 11:30:21
我今天上午成功地用STM32F103VE的FSMC驱动了DS12C887芯片!
zlk1214 回答时间:2017-9-27 11:30:55
本帖最后由 格式化/tp 于 2017-9-27 11:33 编辑

#include <stdio.h>
#include <stm32f10x.h>
#include <string.h>

// 延时n毫秒
void delay(uint16_t nms)
{
    TIM6->ARR = 10 * nms - 1;
    TIM6->PSC = 7199;
    TIM6->EGR = TIM_EGR_UG;
    TIM6->CR1 = TIM_CR1_OPM | TIM_CR1_CEN;
    while (TIM6->CR1 & TIM_CR1_CEN);
}

int fputc(int ch, FILE *fp)
{
    if (fp == stdout)
    {
        if (ch == '\n')
        {
            while ((USART1->SR & USART_SR_TXE) == 0);
            USART1->DR = '\r';
        }
        while ((USART1->SR & USART_SR_TXE) == 0);
        USART1->DR = ch;
    }
    return ch;
}

int main(void)
{
    char buf[20];
   
    RCC->AHBENR |= RCC_AHBENR_FSMCEN;
    RCC->APB1ENR = RCC_APB1ENR_TIM6EN;
    RCC->APB2ENR = RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPBEN | RCC_APB2ENR_IOPDEN | RCC_APB2ENR_IOPEEN | RCC_APB2ENR_USART1EN;
   
    GPIOA->CRH = 0x444444b3; // PA8为RST复位引脚(默认输出低电平), PA9为串口1发送引脚
    GPIOB->CRL = 0xb4444444; // PB7为NADV, 取反后送到AS引脚上, 该引脚不可用地址线代替!
    GPIOD->CRL = 0xb4bb44bb; // PD0~1为AD2~3, PD4为NOE接DS引脚, PD5为NWE接RW引脚, PD7为NE1片选引脚接CS
    GPIOD->CRH = 0xbb444444; // PD14~15为AD0~1
    GPIOE->CRL = 0xb4444444; // PE7为AD4
    GPIOE->CRH = 0x44444bbb; // PE8~10为AD5~7
   
    USART1->BRR = 625; // 串口波特率为115200
    USART1->CR1 = USART_CR1_UE | USART_CR1_TE; // 串口1只允许发送
   
    // FSMC的Bank1, Subbank1设为8位NOR Flash地址/数据线复用模式, 关闭NWAIT引脚
    FSMC_Bank1->BTCR[0] &= ~(FSMC_BCR1_WAITEN | FSMC_BCR1_MWID);
   
    // 下面为可选配置, 用于加快访存速度
    // HCLK=72MHz时, DATAST的最小值为2, 即3xHCLK clock cycles
    FSMC_Bank1->BTCR[1] = (FSMC_Bank1->BTCR[1] & ~(FSMC_BTR1_BUSTURN | FSMC_BTR1_DATAST | FSMC_BTR1_ADDHLD | FSMC_BTR1_ADDSET)) | FSMC_BTR1_DATAST_1 | FSMC_BTR1_ADDHLD_0;
   
    printf("STM32F103VE FSMC DS12C887\n");
    delay(200);
    GPIOA->BSRR = GPIO_BSRR_BS8; // RESET=1, 撤销复位信号
   
    // 读写自由SRAM区域
    strcpy((char *)0x60000033, "This is a string!");
    memcpy(buf, (char *)0x60000033, sizeof(buf));
    printf("str=%s\n", buf);
   
    // 读A~D寄存器
    printf("A=0x%02x B=0x%02x C=0x%02x D=0x%02x\n", *(__IO uint8_t *)0x6000000a, *(__IO uint8_t *)0x6000000b, *(__IO uint8_t *)0x6000000c, *(__IO uint8_t *)0x6000000d);
    while (1)
        __WFI();
}

void HardFault_Handler(void)
{
    printf("Hard Error!\n");
    while (1);
}
zlk1214 回答时间:2017-9-27 11:32:13
NADV信号必须要通过74HC04反相器后才能接到AS上。
五哥1 回答时间:2017-9-29 00:59:05
楼主先用51调试好RTC,在来STM32上实验。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版