cdce913控制

cdce913是一款可调频率输出器件,它的功能实现需要写寄存器,你要设计输出多少频率,就根据它的资料改变相应寄存器。这里只讲怎么I2C控制。

由于工作需要,需要分频使用时钟,所以写了I2C的控制程序,程序可以读写寄存器,可以写EEPROM,但是块读和块写没能实现,只能一个一个的修改寄存器值。块读和块写也是按照资料写的,但是调试就是不成功,不知道问题出在哪里。下面讲如何写的。

首先,定义I2C管脚,我使用的是51单片机模拟的。

//SCL
#define I2C_PORT_SCL_SET_0 P2OUT &= ~BIT1     // set SCL to 0
#define I2C_PORT_SCL_SET_1 P2OUT |= BIT1      // set SCL to 1

//SDA
#define I2C_PORT_SDA_SET_0  P1OUT &= ~BIT7      // set SDA to 0
#define I2C_PORT_SDA_SET_1  P1OUT |= BIT7       // set SDA to 1

然后初始化,根据资料写start、stop、send byte、ack、read_byte这些基础程序,分别如下:

void gpio_init(void)

{

    P2SEL &= ~BIT1;
    P2SEL2 &= ~BIT1;
    P2DIR |= BIT1;

    P1SEL &= ~BIT7;
    P1SEL2 &= ~BIT7;
    P1DIR |= BIT7;

}

void i2c_init(void)
{
    I2C_PORT_SCL_SET_0;
    I2C_PORT_SDA_SET_1;
}

void i2c_start(void)
{
    I2C_PORT_SDA_SET_1;//SDA开始为高
    I2C_PORT_SCL_SET_1;//SCL为高
    delay_1(12);//>=600ns   快速模式600ns   标准4.7us
    I2C_PORT_SDA_SET_0;//SDA为低SPI_PORT_MISO_SET_0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值