Propeller EEPROM Change I2C Address?
jbleecker
Posts: 5
Hello,
I'm working on a project that has a few things sitting on the I2C bus, including a DS32C35, which is a combo RTC and FRAM. Sadly, it also sits at the same I2C slave address (0x50) as the standard EEPROM recommended for the Propeller. (I think, but don't know, that storage of this sort, no matter what the manufacturer, generally has an address of 0x50, based on my experience.) The DS32C35 cannot have its address changed, unfortunately.
I can hardwire the Propeller's EEPROM at another address, but don't know if the Propeller's bootloader will find it. That's an option, if the Propeller can somehow find the chip — don't know enough to know how the bootloader looks for it. Or, perhaps there's a way to tell the chip to look at a different address if I hardwire A0 high or something to make the address 0x51.
The default hold-the-whipped-cream non-fat option is to have some sort of jumper that takes the DS32C35 off the wire while uploading the Propeller firmware. That's an option, definitely — but a little messy. (I'm spinning boards, so a one-off programming jig could work, but it makes upgrading a little hassle-y.)
I'm new to the Propeller, but prowled about a bit to see if there was ever any such a discussion, but so far haven't come across anything. What do the experts think?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Julian Bleecker
http://www.nearfuturelaboratory.com
I'm working on a project that has a few things sitting on the I2C bus, including a DS32C35, which is a combo RTC and FRAM. Sadly, it also sits at the same I2C slave address (0x50) as the standard EEPROM recommended for the Propeller. (I think, but don't know, that storage of this sort, no matter what the manufacturer, generally has an address of 0x50, based on my experience.) The DS32C35 cannot have its address changed, unfortunately.
I can hardwire the Propeller's EEPROM at another address, but don't know if the Propeller's bootloader will find it. That's an option, if the Propeller can somehow find the chip — don't know enough to know how the bootloader looks for it. Or, perhaps there's a way to tell the chip to look at a different address if I hardwire A0 high or something to make the address 0x51.
The default hold-the-whipped-cream non-fat option is to have some sort of jumper that takes the DS32C35 off the wire while uploading the Propeller firmware. That's an option, definitely — but a little messy. (I'm spinning boards, so a one-off programming jig could work, but it makes upgrading a little hassle-y.)
I'm new to the Propeller, but prowled about a bit to see if there was ever any such a discussion, but so far haven't come across anything. What do the experts think?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Julian Bleecker
http://www.nearfuturelaboratory.com
Comments
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Julian Bleecker
http://www.nearfuturelaboratory.com
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Paul Baker
Propeller Applications Engineer
Parallax, Inc.
Thanks fellas.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Julian Bleecker
http://www.nearfuturelaboratory.com
OBC
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
New to the Propeller?
Getting started with the Protoboard? - Propeller Cookbook 1.4
Updates to the Cookbook are now posted to: Propeller.warrantyvoid.us
Got an SD card? - PropDOS
Need a part? Got spare electronics? - The Electronics Exchange
www.nearfuturelaboratory.com/2007/07/18/more-pcb-stuff/
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Julian Bleecker
http://www.nearfuturelaboratory.com
If you do get strapped for I/O pins, then you might be able to do a simple I2C trick..... keep the SDA and SCL lines that go to your EEPROM the way that they are, but swap them with the DS32C35 and adjust your software for the swap. Sometimes this works with devices that have the same address as you mention.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Beau Schwabe
IC Layout Engineer
Parallax, Inc.
Because the Propeller hard-drives SCL during boot loading though there is a theoretical risk of damage should the DS32C35 ( or whatever ) think it was being addressed and pull SCL low while the Propeller forced it high. I'm not sure how real such a risk would be ( minimal at best I expect ) and AFAIR the Propeller is reportedly near immune to having its outputs shorted to 0V.
With soft-driven SDA and SCL I2C configurations this wouldn't even be an issue. There'd be possible data corruption but no hardware damage. I'd always recommend soft-driven I2C drivers whenever possible, the code isn't any more complicated and removes risk of damage.