00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "at91sam7s64.h"
00023 #include "global.h"
00024 #include "i2c.h"
00025 #include "po1030.h"
00026
00027
00028
00029 void po1030Init(void)
00030 {
00031
00032 }
00033
00034 u16 po1030GetID(void)
00035 {
00036 return po1030RegRead(PO1030_REG_DEVID);
00037 }
00038
00039
00040 u16 po1030RegRead(u08 regaddr)
00041 {
00042 u08 packet[2];
00043
00044 packet[0] = (regaddr & PO1030_REG_MASK);
00045 i2cMasterSend(PO1030_I2C_BASE_ADDR, 1, &packet[0]);
00046
00047 if(regaddr&PO1030_REG_16BIT)
00048 {
00049 i2cMasterReceive(PO1030_I2C_BASE_ADDR, 2, &packet[0]);
00050
00051 return (packet[0]<<8)|packet[1];
00052 }
00053 else
00054 {
00055 i2cMasterReceive(PO1030_I2C_BASE_ADDR, 1, &packet[0]);
00056
00057 return packet[0];
00058 }
00059 }
00060
00061 void po1030RegWrite(u08 regaddr, u16 value)
00062 {
00063 u08 packet[3];
00064
00065 packet[0] = (regaddr & PO1030_REG_MASK);
00066
00067 if(regaddr&PO1030_REG_16BIT)
00068 {
00069
00070 packet[1] = (value>>8);
00071 packet[2] = (value);
00072
00073 i2cMasterSend(PO1030_I2C_BASE_ADDR, 3, &packet[0]);
00074 }
00075 else
00076 {
00077
00078 packet[1] = (value);
00079
00080 i2cMasterSend(PO1030_I2C_BASE_ADDR, 2, &packet[0]);
00081 }
00082 }
00083
00084
00085