element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet & Tria Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • About Us
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
RoadTests & Reviews
  • Products
  • More
RoadTests & Reviews
RoadTest Forum Fuel Tank BoosterPack With Rechargeable LION Battery and CCS or Energia - I2C issues
  • Blogs
  • RoadTest Forum
  • Documents
  • RoadTests
  • Reviews
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join RoadTests & Reviews to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Verified Answer
  • Replies 26 replies
  • Answers 1 answer
  • Subscribers 2564 subscribers
  • Views 4550 views
  • Users 0 members are here
  • i2c
  • help
  • fueltank
  • boosterpack
  • energia
  • ap:wired_communication-i2c
  • msp430
  • launchpad
  • ti
Related

Fuel Tank BoosterPack With Rechargeable LION Battery and CCS or Energia - I2C issues

Robert Peter Oakes
Robert Peter Oakes over 11 years ago

I am one of the Road testers for the Fuel tank Booster Pack

 

I have 3 issues I am trying to resolve and would appreciate a little help, it is code related, not an issue with the actual evaluation of the product,

 

 

CCS Issues

With the booster Pack are a couple of demo programs, one for the MSP430G, one for a Tivia C. none for the board delivered with the Booster image (MSP430F5529)

 

so away I go testing , getting ready to run the demos, MSP430G demo compiles, uploads to the Board and seems to run but prints garbage on the console as if it had the wrong baud rate set. It is supposed to be set to 9600, N, 8, 1 but I tried that and every other baud rate available to Putty. Nothing worked. here is the code The specified item was not found.

 

so on to the Tivia C demo, this wont even compile so I can not get it to upload and test, missing libraries error etc

 

both Demos are CCS projects, I am not familiar with CCS, although I can make sense of the code, the tool is a struggle to get to know and use... but I was able to compile and upload the MSP430G project but with issues as shown above which are not related to CCS as far as I can tell.

 

any tips regarding either of these two issues would be appreciated.

 

Energia Issue (Or Library ?)

 

So given the issues with CCS I decided to simply write the code in Energia, this would be more useful to many readers as there are no sample code I have been able to see so far...

 

If I send a read to the Fuel Gauge for any one parameter it will work without a problem (See Views below)

If I try to grab a series of values like Volts, Avg Amps, Temp then it all goes wrong, I have tried many variations of code to no Joy, currently I suspect it may be the Wire library

 

below is the start of my demo code for the Energia IDE, compiles ok, uploads ok, works on multiple platforms ok except for the one issue, cant read more than one parameter without going wrong.

 

 

#define bq27510CMD_TEMP_LSB  0x06

#define bq27510CMD_VOLT_LSB  0x08

#define bq27510CMD_AI_LSB    0x14

#define bq27510CMD_SOC_LSB   0x20

#define bq27510_ADR      0x55  // address of the fuel gauge


#include <Wire.h>


void setup()

{

  Wire.begin();        // join i2c bus (address optional for master)

  Serial.begin(9600);  // start serial for output

}

void loop()

{

  int Volts;

  int  Amps;

  signed int  AverageCurrent;

  int  Temp;

  int SOC;

 

// uncommenting any one of these works 100%, as soon as more than one is used, it all goes wrong.

//Temp  = getValue(bq27510_ADR, bq27510CMD_TEMP_LSB )/ 10 - 273;

//Volts = getValue(bq27510_ADR, bq27510CMD_VOLT_LSB );

Amps = getValue(bq27510_ADR, bq27510CMD_AI_LSB);

//SOC = getValue(bq27510_ADR, bq27510CMD_SOC_LSB);

 

  Serial.print("Temp=" );  Serial.println(Temp);

  Serial.print("Volts=" );  Serial.println(Volts);

  Serial.print("AvgI=" );  Serial.println(Amps);

  Serial.print("SOC=" );   Serial.println(SOC);

  Serial.println(millis()); // to know the console actually updating

 

  Serial.println(); 

  Serial.println();

  delay(2000); // only output every 2 seconds

}

 

int getValue(int port, int cmd)

{

  unsigned int tmp1, tmp2, response;

  Wire.beginTransmission(port);

  Wire.write(byte(cmd));

  response = Wire.requestFrom(port, 2);    // request 2 bytes from slave device port, response always gets set to 62 for some reason, should be 2.

  

Serial.print("available1="); Serial.print(Wire.available()); // Debug statement, always returns 2 as expected.

 

  Wire.endTransmission(true);

 

  while(Wire.available())

  {

     // messy I know, should not assume two responses but this is a prototype and it works, will be cleaned up

    tmp1 = Wire.read() ;

    tmp2 = Wire.read() ;

  }

 

  Serial.print("cmd =");Serial.print(cmd);Serial.print(" Value =");Serial.println(transBytes2Int(tmp2, tmp1)); // debug statement

  return transBytes2Int(tmp2, tmp1);

}

 

unsigned int transBytes2Int(unsigned char msb, unsigned char lsb)

{ // this works just fine.

    unsigned int tmp;

    tmp = ((msb << 8) & 0xFF00);

    return ((unsigned int)(tmp + lsb) & 0x0000FFFF);

}

 

 

Fullscreen 4336.contentimage_41091.html Download
<html><head><title>Jive SBS</title></head>
<body><font face="arial,helvetica,sans-serif">
<b>Error</b><br><font size="-1">
An general error occurred while processing your request.
</font></font></body></html>

This is the output from the above code, as you can see the mA reads correctly (Verified with a meter), discharging at a rate of 15mA so -15

 

change code to this

 

//Temp  = getValue(bq27510_ADR, bq27510CMD_TEMP_LSB )/ 10 - 273;

Volts = getValue(bq27510_ADR, bq27510CMD_VOLT_LSB );

//Amps = getValue(bq27510_ADR, bq27510CMD_AI_LSB);

//SOC = getValue(bq27510_ADR, bq27510CMD_SOC_LSB);

image

  Volts working OK, 4.115V and verified with a meter.


now

 

Temp  = getValue(bq27510_ADR, bq27510CMD_TEMP_LSB )/ 10 - 273;

//Volts = getValue(bq27510_ADR, bq27510CMD_VOLT_LSB );

//Amps = getValue(bq27510_ADR, bq27510CMD_AI_LSB);

//SOC = getValue(bq27510_ADR, bq27510CMD_SOC_LSB);

 

Fullscreen 6283.contentimage_41092.html Download
<html><head><title>Jive SBS</title></head>
<body><font face="arial,helvetica,sans-serif">
<b>Error</b><br><font size="-1">
An general error occurred while processing your request.
</font></font></body></html>

Again, correct measurement 22deg C.

 

so why when I do this

Temp  = getValue(bq27510_ADR, bq27510CMD_TEMP_LSB )/ 10 - 273;

Volts = getValue(bq27510_ADR, bq27510CMD_VOLT_LSB );

Amps = getValue(bq27510_ADR, bq27510CMD_AI_LSB);

//SOC = getValue(bq27510_ADR, bq27510CMD_SOC_LSB);

 

Fullscreen 1425.contentimage_41093.html Download
<html><head><title>Jive SBS</title></head>
<body><font face="arial,helvetica,sans-serif">
<b>Error</b><br><font size="-1">
An general error occurred while processing your request.
</font></font></body></html>

does it all go wrong, I can find nothing in the data sheets to say you can not do this, and if you look, the last measurement is actually reflecting the previous request, as in the Voltage reading

I can re-arrange the order of requesting the parameters and the affect is the same, the last one reflects the previous and the others are garbage. Is smells of a memory issue probably in the Wire or TWI library, I look at the wire and could not find anything obvious.


So if any of you Energia experts out there with some I2C knowledge can help, suggest workaround or something it would be appreciated.


  • Sign in to reply
  • Cancel

Top Replies

  • Robert Peter Oakes
    Robert Peter Oakes over 11 years ago in reply to gsgill112 +1
    you should not be seeing 15mA no matter the load on the fuel tank, the fuel tank without modification can draw tht much simply sitting there with a battery connected and nothing else (One of its down sides…
Parents
  • gsgill112
    0 gsgill112 over 11 years ago

    Hi Peter, I have tried the demo code on CCS (Stelleris Launchpad with Battery Boost Pack) and everything works, Instead of downloading the source from element14 (they do not include libraries for I2C and etc, so compiler throws an error) I Had downloaded Tiva C Ware package from Ti and that had an Example, which worked Absolutely Fine.

    Also I had no issues programming the MSP430F5529 LP. both from CCS and Energia. (In Energia the FADE Ex wont work as LED's isnt connected to the PWM O/P pin)

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Reject Answer
    • Cancel
  • Robert Peter Oakes
    0 Robert Peter Oakes over 11 years ago in reply to gsgill112

    Thanks you for the tip re alternate code source, I will try this for the Tivia C Code and MSP430G over the week end.

     

    The issue was not the other Tivia C or MSP430G/430F demos, the ones i tried work OK, just specifically the one for the I2C and the Fuel Gauge, like I stated, the 430G demo compiled and uploaded OK, just would print garbage on the screen similar to having the wrong Baud Rate set (But was not that).

     

    Regarding the use on Energia, As I could not find any Fuel Gauge demos for Energia, I started to write my own, I initially thought I had an issue with the I2C library talking to the Fuel Gauge but have since confirmed it is the Fuel Gauge itself, there is something odd about how you have to initiate a request for a parameter, you have to send the command twice for it to work correctly if your asking for more than one parameter (Have not got to the root cause yet)

     

    In the process of elimination, I wired up the fuel pack to my Arduino I2C and with the same code but Arduino I2C Wire library. It performed in exactly the same way as on all three launch pads (Tivia C, MSP430G and 430F) in that if i tried to access more than one parameter in the same sketch it would mess up (See above views).

     

    Reading through the fuel tank demo code for CCS, i did notice a statement about the first read being unreliable and therefor needed to be sent twice, (No mention of this in the Data Sheets), after much experimenting I confirmed there is an issue and that it was the command that needs to be sent twice (AA, 08, STOP, AA 08 STOP, AB, read read) for example.

     

    I modified my own demo code to read the fuel tank and voila now it is working nicely providing correct output on the console (Just with double the commands), and now I have a nice demo using the fuel gauge with Energia. I will be posting all the code etc over the weekend.

     

    image

    As you can see, now working OK, the rows with 0 are with the battery disconnected. this was compiled and uploaded with Energia.

     

    I will post code and remaining updates on the Road Test review pages this weekend.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Reject Answer
    • Cancel
Reply
  • Robert Peter Oakes
    0 Robert Peter Oakes over 11 years ago in reply to gsgill112

    Thanks you for the tip re alternate code source, I will try this for the Tivia C Code and MSP430G over the week end.

     

    The issue was not the other Tivia C or MSP430G/430F demos, the ones i tried work OK, just specifically the one for the I2C and the Fuel Gauge, like I stated, the 430G demo compiled and uploaded OK, just would print garbage on the screen similar to having the wrong Baud Rate set (But was not that).

     

    Regarding the use on Energia, As I could not find any Fuel Gauge demos for Energia, I started to write my own, I initially thought I had an issue with the I2C library talking to the Fuel Gauge but have since confirmed it is the Fuel Gauge itself, there is something odd about how you have to initiate a request for a parameter, you have to send the command twice for it to work correctly if your asking for more than one parameter (Have not got to the root cause yet)

     

    In the process of elimination, I wired up the fuel pack to my Arduino I2C and with the same code but Arduino I2C Wire library. It performed in exactly the same way as on all three launch pads (Tivia C, MSP430G and 430F) in that if i tried to access more than one parameter in the same sketch it would mess up (See above views).

     

    Reading through the fuel tank demo code for CCS, i did notice a statement about the first read being unreliable and therefor needed to be sent twice, (No mention of this in the Data Sheets), after much experimenting I confirmed there is an issue and that it was the command that needs to be sent twice (AA, 08, STOP, AA 08 STOP, AB, read read) for example.

     

    I modified my own demo code to read the fuel tank and voila now it is working nicely providing correct output on the console (Just with double the commands), and now I have a nice demo using the fuel gauge with Energia. I will be posting all the code etc over the weekend.

     

    image

    As you can see, now working OK, the rows with 0 are with the battery disconnected. this was compiled and uploaded with Energia.

     

    I will post code and remaining updates on the Road Test review pages this weekend.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Reject Answer
    • Cancel
Children
No Data
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube