123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- /*
- ** author: jimbo
- ** date: 2019-03-21
- ** version: 1.00
- ** e-mail: zhouchao@storlead.com 1959353124@qq.com
- ** brief: INA220 driver
- *
- */
- #include "bmc_main.h"
- #include "i2c_api.h"
- /*
- * ** sensor name: INA220
- * ** brief:Volts
- * **/
- int INA220_3V3_Volts_init(hal_t *phal)
- {
- printf("init INA220 3V3 Volts!\n");
- return 0;
- }
- int INA220_3V3_Volts_write(hal_t *phal)
- {
- printf("write INA220 3V3 Volts!\n");
- return 0;
- }
- int INA220_3V3_Volts_read(hal_t *phal)
- {
- uint8_t pData[2]={0x00,0x00};
- uint16_t *Volt;
- uint8_t temp;
- I2C_DEV_T i2c_dev;
- i2c_dev.bus = I2C3;
- I2C_Master_Receiver(&i2c_dev,0x88,pData,0x02,0x02);
- // printf("read INA220 3V3 Volts!\n");
- temp=pData[1];
- pData[1]=pData[0];
- pData[0]=temp;
- Volt=pData;
- // printf("3V3 Volt is %x\n",*Volt);
- // printf("%x , %x \n",pData[0],pData[1]);
- if((*Volt>>5)>255)
- *phal->pbyte =255;
- else
- *phal->pbyte =*Volt>>5;
- return 0;
- }
- /*
- * * ** sensor name: INA220
- * * ** brief: Volts
- * * **/
- int INA220_5V0_Volts_init(hal_t *phal)
- {
- printf("init INA220 5V0 Volts!\n");
- return 0;
- }
- int INA220_5V0_Volts_write(hal_t *phal)
- {
- printf("write INA220 5V0 Volts!\n");
- return 0;
- }
- int INA220_5V0_Volts_read(hal_t *phal)
- {
- uint8_t pData[2]={0x00,0x00};
- uint16_t *Volt;
- uint8_t temp;
- I2C_DEV_T i2c_dev;
- i2c_dev.bus = I2C3;
- I2C_Master_Receiver(&i2c_dev,0x82,pData,0x02,0x02);
- temp=pData[1];
- pData[1]=pData[0];
- pData[0]=temp;
- Volt=pData;
- // printf("read INA220 5V0 Volts!\n");
- if((*Volt>>6)>255)
- *phal->pbyte = 255;
- else
- *phal->pbyte = *Volt>>6;
- return 0;
- }
- /*
- * * * ** sensor name: INA220
- * * * ** brief: Volts
- * * * **/
- int INA220_12V0_Volts_init(hal_t *phal)
- {
- printf("init INA220 12V0 Volts!\n");
- return 0;
- }
- int INA220_12V0_Volts_write(hal_t *phal)
- {
- printf("write INA220 12V0 Volts!\n");
- return 0;
- }
- int INA220_12V0_Volts_read(hal_t *phal)
- {
- uint8_t pData[2]={0x00,0x00};
- uint16_t *Volt;
- uint8_t temp;
- I2C_DEV_T i2c_dev;
- i2c_dev.bus = I2C3;
- I2C_Master_Receiver(&i2c_dev,0x80,pData,0x02,0x02);
- temp=pData[1];
- pData[1]=pData[0];
- pData[0]=temp;
- Volt=pData;
- // printf("read INA220 12V0 Volts!\n");
- if((*Volt>>7)>255)
- *phal->pbyte = 255;
- else
- *phal->pbyte = *Volt>>7;
- return 0;
- }
- /*
- * * * * * * ** sensor name: INA220
- * * * * * * ** brief: Amps
- * * * * * * **/
- int INA220_3V3_Amps_init(hal_t *phal)
- {
- printf("init INA220 3V3 Amps!\n");
- return 0;
- }
-
- int INA220_3V3_Amps_write(hal_t *phal)
- {
- printf("write INA220 3V3 Amps!\n");
- return 0;
- }
-
- int INA220_3V3_Amps_read(hal_t *phal)
- {
- uint8_t pData[2]={0x00,0x00};
- uint16_t *Amps;
- uint8_t temp;
- I2C_DEV_T i2c_dev;
- i2c_dev.bus = I2C3;
- I2C_Master_Receiver(&i2c_dev,0x88,pData,0x04,0x02);
- temp=pData[1];
- pData[1]=pData[0];
- pData[0]=temp;
- Amps=pData;
- // printf("read INA220 3V3 Volts!\n");
- if((*Amps>>1)>255)
- *phal->pbyte = 255;
- else
- *phal->pbyte = *Amps>>1;
- return 0;
- }
- /*
- * * * * * ** sensor name: INA220
- * * * * * ** brief: Amps
- * * * * * **/
- int INA220_5V0_Amps_init(hal_t *phal)
- {
- printf("init INA220 5V0 Amps!\n");
- return 0;
- }
- int INA220_5V0_Amps_write(hal_t *phal)
- {
- printf("write INA220 5V0 Amps!\n");
- return 0;
- }
- int INA220_5V0_Amps_read(hal_t *phal)
- {
- uint8_t pData[2]={0x00,0x00};
- uint16_t *Amps;
- uint8_t temp;
- I2C_DEV_T i2c_dev;
- i2c_dev.bus = I2C3;
- I2C_Master_Receiver(&i2c_dev,0x82,pData,0x04,0x02);
- temp=pData[1];
- pData[1]=pData[0];
- pData[0]=temp;
- Amps=pData;
- // printf("read INA220 5V0 Volts!\n");
- if((*Amps>>1)>255)
- *phal->pbyte = 255;
- else
- *phal->pbyte = *Amps>>1;
- return 0;
- }
- /*
- * * * * ** sensor name: INA220
- * * * * ** brief: Amps
- * * * * **/
- int INA220_12V0_Amps_init(hal_t *phal)
- {
- printf("init INA220 12V0 Amps!\n");
- return 0;
- }
- int INA220_12V0_Amps_write(hal_t *phal)
- {
- printf("write INA220 12V0 Amps!\n");
- return 0;
- }
- int INA220_12V0_Amps_read(hal_t *phal)
- {
- uint8_t pData[2]={0x00,0x00};
- uint16_t *Amps;
- uint8_t temp;
- I2C_DEV_T i2c_dev;
- i2c_dev.bus = I2C3;
- I2C_Master_Receiver(&i2c_dev,0x80,pData,0x04,0x02);
- temp=pData[1];
- pData[1]=pData[0];
- pData[0]=temp;
- Amps=pData;
- // printf("read INA220 12V0 Volts!\n");
- if((*Amps>>1)>255)
- *phal->pbyte = 255;
- else
- *phal->pbyte = *Amps>>1;
- return 0;
- }
|