📄 ch452.c
字号:
/*******************************************************************
CH452 2 线接口
*******************************************************************/
#include <msp430x14x.h>
#include "define.h"
#include "Global.h"
#define DELAY_1US _NOP();_NOP();_NOP();_NOP();_NOP()
#define CHIP1 0x40
#define CHIP2 0x60
#define CHIP3 0x40
/*******************************************************************
函数名称:对第一片CH452进行写操作
command 命令字
*******************************************************************/
void CH452_Write_1(unsigned int command)
{
Start_I2c_1(); // 启动总线
Send_Byte_1(((unsigned char)(command>>7)&0x1E)|CHIP1);// 发送高位数据
Send_Byte_1((unsigned char)command); // 发送低位数据
Stop_I2c_1(); // 结束总线
}
/*******************************************************************
函数名称:对第二片CH452进行写操作
command 命令字
*******************************************************************/
void CH452_Write_2(unsigned int command)
{
Start_I2c_1(); // 启动总线
Send_Byte_1(((unsigned char)(command>>7)&0x1E)|CHIP2);// 发送高位数据
Send_Byte_1((unsigned char)command); // 发送低位数据
Stop_I2c_1(); // 结束总线
}
/*******************************************************************
函数名称:对第三片CH452进行写操作
command 命令字
*******************************************************************/
void CH452_Write_3(unsigned int command)
{
Start_I2c_3(); // 启动总线
Send_Byte_3(((unsigned char)(command>>7)&0x1E)|CHIP3);// 发送高位数据
Send_Byte_3((unsigned char)command); // 发送低位数据
Stop_I2c_3(); // 结束总线
}
/*******************************************************************
函数名称: Start_I2c_1
功能描述: 启动总线
********************************************************************/
void Start_I2c_1(void)
{
P2OUT |= SDA1;
DELAY_1US;
P2OUT |= SCL1;
DELAY_1US;
P2OUT &= ~SDA1;
DELAY_1US;
P2OUT &= ~SCL1;
DELAY_1US;
}
/*******************************************************************
函数名称: Stop_I2c_1
功能描述: 停止总线
********************************************************************/
void Stop_I2c_1(void)
{
P2OUT &= ~SDA1;
DELAY_1US;
P2OUT |= SCL1;
DELAY_1US;
P2OUT |= SDA1;
DELAY_1US;
P2OUT &= ~SCL1;
DELAY_1US;
}
/*******************************************************************
函数名称: Send_Byte_1
功能描述: 发送字节
输 入: 要发送的字
********************************************************************/
void Send_Byte_1(unsigned char dat)
{
unsigned char i;
for (i=0; i<8; i++)
{
if ((dat & 0x80) == 0x80) P2OUT |= SDA1;
else P2OUT &= ~SDA1;
dat <<= 1;
DELAY_1US;
P2OUT |= SCL1;
DELAY_1US;
P2OUT &= ~SCL1;
DELAY_1US;
}
P2OUT |= SDA1;
DELAY_1US;
P2OUT |= SCL1;
DELAY_1US;
P2OUT &= ~SCL1;
DELAY_1US;
}
/*******************************************************************
函数名称: Start_I2c_3
功能描述: 启动总线
********************************************************************/
void Start_I2c_3(void)
{
P2OUT |= SDA2;
DELAY_1US;
P2OUT |= SCL2;
DELAY_1US;
P2OUT &= ~SDA2;
DELAY_1US;
P2OUT &= ~SCL2;
DELAY_1US;
}
/*******************************************************************
函数名称: Stop_I2c_3
功能描述: 停止总线
********************************************************************/
void Stop_I2c_3(void)
{
P2OUT &= ~SDA2;
DELAY_1US;
P2OUT |= SCL2;
DELAY_1US;
P2OUT |= SDA2;
DELAY_1US;
P2OUT &= ~SCL2;
DELAY_1US;
}
/*******************************************************************
函数名称: Send_Byte_3
功能描述: 发送字节
输 入: 要发送的字
********************************************************************/
void Send_Byte_3(unsigned char dat)
{
unsigned char i;
for (i=0; i<8; i++)
{
if ((dat & 0x80) == 0x80) P2OUT |= SDA2;
else P2OUT &= ~SDA2;
dat <<= 1;
DELAY_1US;
P2OUT |= SCL2;
DELAY_1US;
P2OUT &= ~SCL2;
DELAY_1US;
}
P2OUT |= SDA2;
DELAY_1US;
P2OUT |= SCL2;
DELAY_1US;
P2OUT &= ~SCL2;
DELAY_1US;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -