在线时间32 小时
UID3096468
注册时间2015-1-28
NXP金币0
该用户从未签到
中级会员
 
- 积分
- 256
- 最后登录
- 2016-1-21
|
TPS65185是一款电源芯片,不知道有多少飞友在用,这是我写的,不知道多大家有多少帮助。
TPS65185.C
#include "tps65185.h"
#include "i2c.h"
#define TPS_ERROR 0
#define TPS_SUCCESS 1
static void pause(void)
{
unsigned int i,j;
for(i = 0; i <4000; i++) {
__nop();
}
}
////////////////////////////////////////////////////////////////////////
// TPS65185_reg Read_Write
//
////////////////////////////////////////////////////////////////////////
extern unsigned char tps_dev_read_reg(unsigned char addr)
{
unsigned char result;
i2c_start();
i2c_write_byte(TPS65185_I2C1_ADDRESS | I2C_WRITE);
i2c_wait();
i2c_get_ack();
i2c_write_byte(addr);
i2c_wait();
i2c_get_ack();
i2c_repeated_start();
i2c_write_byte(TPS65185_I2C1_ADDRESS | I2C_READ);
i2c_wait();
i2c_get_ack();
i2c_set_rx_mode();
i2c_give_nack();
result = i2c_read_byte();
i2c_wait();
i2c_stop ();
result = i2c_read_byte();
pause();
return result;
}
extern unsigned char tps_dev_write_reg(unsigned char addr, unsigned char data)
{
unsigned char result;
i2c_start();
i2c_write_byte(TPS65185_I2C1_ADDRESS|I2C_WRITE);
i2c_wait();
i2c_get_ack();
i2c_write_byte(addr);
i2c_wait();
i2c_get_ack();
i2c_write_byte(data);
i2c_wait();
i2c_get_ack();
i2c_stop();
pause();
result = i2c_read_byte();
pause();
return result;
}
extern unsigned char tps_dev_test_reg_rw(unsigned char addr,unsigned char data)
{
unsigned char d;
d = tps_dev_read_reg(addr);
tps_dev_write_reg(addr,data);
d = tps_dev_read_reg(addr);
return 0;
}
TPS65185.H
#ifndef _TPS65185_H_
#define _TPS65185_H_
#define TPS65185_I2C1_ADDRESS 0xd0
#define I2C_READ 1
#define I2C_WRITE 0
extern unsigned char tps_dev_read_reg(unsigned char addr);
extern unsigned char tps_dev_write_reg(unsigned char addr, unsigned char data);
extern unsigned char tps_dev_test_reg_rw(unsigned char addr,unsigned char data);
#endif
|
|