完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这个芯片内部好像有一个电池,电池坏了就不动了。
|
|
|
|
是刚买的芯片 应该是不至于 吧? 您用过这块芯片吗? 这块芯片是不是给5V供电它自己会工作的? |
|
|
|
我给了5V供电,不做其他的操作,但是我也不知道怎么判断这块芯片在5V下是不是在工作了。 |
|
|
|
这种片子好像是早期PC-8086电脑上使用的,内部那个电池坏了就不走时了。你可以到相关网站下载资料,好像需要对其进行寄存器初始化方可启动RTC |
|
|
|
ctwewer 发表于 2018-12-11 16:09 我是直接移植了51的,初始化应该是没问题。 |
|
|
|
|
|
|
|
我也有一片这个芯片,它是将一个时钟芯片和一个纽扣电池封装在一起,建议楼主把芯片拆开看清时钟芯片型号后再找对应的文档,
|
|
|
|
887有+3.3V的版本,看清电压才好加电压哦
|
|
|
|
|
|
|
|
基本用不到了,使用ST自身的RTC时钟功能就可以实现了,顶多加一个备份电池,这个用在ST上,没有啥优点!
|
|
|
|
我今天上午成功地用STM32F103VE的FSMC驱动了DS12C887芯片!
|
|
|
|
本帖最后由 格式化/tp 于 2017-9-27 11:33 编辑
#include #include #include // 延时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 DS12C887n"); 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=%sn", buf); // 读A~D寄存器 printf("A=0x%02x B=0x%02x C=0x%02x D=0x%02xn", *(__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); } |
|
|
|
NADV信号必须要通过74HC04反相器后才能接到AS上。
|
|
|
|
楼主先用51调试好RTC,在来STM32上实验。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1187 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1122 浏览 2 评论
2223 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1311 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1735 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 19:57 , Processed in 0.955784 second(s), Total 99, Slave 82 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号