打印

有人用GD32和RX-8025通信吗

[复制链接]
684|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huihui520|  楼主 | 2015-12-29 23:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在做一个RTC,想用RX-8025,不知道谁做过类似的程序
沙发
peace555| | 2015-12-29 23:28 | 只看该作者
/* Includes--------------------------------------------------------------*/
//#include        "sysconfig.h"
#include "stm32f10x.h"
//#include        "bsp_SIIC.h"
#include "bsp_RX8025.h"
/*
Private define-----------------------------------------------------------------------------*/
// 设备读写地址
#define        RX8025_ADDR_READ                0x65
#define        RX8025_ADDR_WRITE                0x64
// 设备寄存器地址
#define        RX8025_ADDR_SECONDS                0x00
#define        RX8025_ADDR_WEEK                0x30
#define        RX8025_ADDR_DATES                0x40
#define        RX8025_ADDR_MONTH                0x50
#define        RX8025_ADDR_MINUTES                0x80
#define        RX8025_ADDR_CONTROL1        0xE0
#define        RX8025_ADDR_CONTROL2        0xF0
// 设备操作模式
#define        RX8025_WRITE_MODE                0xF0
#define        RX8025_READ_MODE                0xF0
#define        RX8025_SIMP_READ_MODE        0x04
#define u8BAND(addr, u8num) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(u8num<<2))
#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr))
#define u8_ADDR(addr, u8num)   MEM_ADDR(u8BAND(addr, u8num))
//IO口地址映射
#define GPIOA_ODR_Addr    (GPIOA_BASE+12) //0x4001080C
#define GPIOB_ODR_Addr    (GPIOB_BASE+12) //0x40010C0C
#define GPIOC_ODR_Addr    (GPIOC_BASE+12) //0x4001100C
#define GPIOD_ODR_Addr    (GPIOD_BASE+12) //0x4001140C
#define GPIOE_ODR_Addr    (GPIOE_BASE+12) //0x4001180C
#define GPIOF_ODR_Addr    (GPIOF_BASE+12) //0x40011A0C   
#define GPIOG_ODR_Addr    (GPIOG_BASE+12) //0x40011E0C   
#define GPIOA_IDR_Addr    (GPIOA_BASE+8) //0x40010808
#define GPIOB_IDR_Addr    (GPIOB_BASE+8) //0x40010C08
#define GPIOC_IDR_Addr    (GPIOC_BASE+8) //0x40011008
#define GPIOD_IDR_Addr    (GPIOD_BASE+8) //0x40011408
#define GPIOE_IDR_Addr    (GPIOE_BASE+8) //0x40011808
#define GPIOF_IDR_Addr    (GPIOF_BASE+8) //0x40011A08
#define GPIOG_IDR_Addr    (GPIOG_BASE+8) //0x40011E08
//IO口操作,只对单一的IO口!
//确保n的值小于16!
#define PAout(n)   u8_ADDR(GPIOA_ODR_Addr,n)  //输出
#define PAin(n)    u8_ADDR(GPIOA_IDR_Addr,n)  //输入
#define PBout(n)   u8_ADDR(GPIOB_ODR_Addr,n)  //输出
#define PBin(n)    u8_ADDR(GPIOB_IDR_Addr,n)  //输入
#define PCout(n)   u8_ADDR(GPIOC_ODR_Addr,n)  //输出
#define PCin(n)    u8_ADDR(GPIOC_IDR_Addr,n)  //输入
#define PDout(n)   u8_ADDR(GPIOD_ODR_Addr,n)  //输出
#define PDin(n)    u8_ADDR(GPIOD_IDR_Addr,n)  //输入
#define PEout(n)   u8_ADDR(GPIOE_ODR_Addr,n)  //输出
#define PEin(n)    u8_ADDR(GPIOE_IDR_Addr,n)  //输入
#define PFout(n)   u8_ADDR(GPIOF_ODR_Addr,n)  //输出
#define PFin(n)    u8_ADDR(GPIOF_IDR_Addr,n)  //输入
#define PGout(n)   u8_ADDR(GPIOG_ODR_Addr,n)  //输出
#define PGin(n)    u8_ADDR(GPIOG_IDR_Addr,n)  //输入

使用特权

评论回复
板凳
peace555| | 2015-12-29 23:31 | 只看该作者
/////////////////////////////////////////////////////////////////
//Ex_NVIC_Config专用定义
#define GPIO_A 0
#define GPIO_B 1
#define GPIO_C 2
#define GPIO_D 3
#define GPIO_E 4
#define GPIO_F 5
#define GPIO_G 6

//IO操作函数
#define IIC_SCL PBout(15) //SCL
#define IIC_SDA PBout(14) //SDA
#define READ_SDA PBin(14) //输入SDA
void I2C_Configuration(void);

使用特权

评论回复
地板
peace555| | 2015-12-29 23:36 | 只看该作者
/* Private typedef----------------------------------------------------------------------------*/
// 寄存器结构
// CONTROL1,结构定义
typedef struct
{
        u8 CT:3;
        u8 TEST:1;
        u8 nCLEN2:1;
        u8 HOUR24:1;
        u8 DALE:1;
        u8 WALE:1;
}_RX8025_REG_CONTROL1_BITS;
typedef union
{
        u8 byte;
        _RX8025_REG_CONTROL1_BITS bits;
}_RX8025_REG_CONTROL1;
/* Private macro------------------------------------------------------------------------------*/
/* Private variables--------------------------------------------------------------------------*/
/* Private function prototypes----------------------------------------------------------------*/
/* Private functions--------------------------------------------------------------------------*/

使用特权

评论回复
5
peace555| | 2015-12-29 23:38 | 只看该作者
void I2C_Configuration(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
        
        RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO ,ENABLE);
        
        
        /* Configure I2C2 pins: PB15 -> SCL and PB14 -> SDA */
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
        GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_14 | GPIO_Pin_15;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;  
        GPIO_Init(GPIOB, &GPIO_InitStructure);
}

void SDA_IN(void) //sda线输入 ,PA11
{
        GPIO_InitTypeDef GPIO_InitStructure;//声明GPIO初始化结构体                        
        // Configure I2C1 pins:SDA
        GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_14;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
}

使用特权

评论回复
6
smilingangel| | 2015-12-30 23:01 | 只看该作者
这个需要注意电平信号的转换就可以的。

使用特权

评论回复
7
zb0830| | 2015-12-31 23:25 | 只看该作者
IIC很重要

使用特权

评论回复
8
zhengbo7hui| | 2015-12-31 23:58 | 只看该作者
这个是一个比较好的时钟芯片

使用特权

评论回复
9
heping517| | 2015-12-31 23:59 | 只看该作者
这个芯片不错,内置晶振

使用特权

评论回复
10
zhengbo7hui| | 2015-12-31 23:59 | 只看该作者
在电表行业用的比较多的,爱普生的芯片

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

84

主题

706

帖子

2

粉丝