View previous topic :: View next topic |
Author |
Message |
RoGuE_StreaK
Joined: 02 Feb 2010 Posts: 73
|
hardware i2c and spi on PIC24FJ64? |
Posted: Thu Mar 01, 2012 12:23 am |
|
|
From various searches, it seems that the consensus is if you want to use SPI and i2c, you should do one as hardware and one as software, unless there are two hardware modules; can someone confirm my interpretation of the PIC24FJ64GA004 spec sheet as indicating it does indeed have multiple hardware modules, and that it's best to use the hardware for both SPI and i2c?
If both hardware, is it best to use i2c1 and SPI2, just to make sure there's no crossover between them? |
|
![](templates/subSilver/images/spacer.gif) |
FvM
Joined: 27 Aug 2008 Posts: 2337 Location: Germany
|
|
Posted: Thu Mar 01, 2012 12:54 am |
|
|
Your assumption is wrong, PIC24 SPI and I2C hardware modules are independent of each other.
For 24FxxxG004 family, hardware SPI can refer to any available RPxx pins, I2C is restricted to the respective dedicated pins. |
|
![](templates/subSilver/images/spacer.gif) |
RoGuE_StreaK
Joined: 02 Feb 2010 Posts: 73
|
|
Posted: Thu Mar 01, 2012 3:24 am |
|
|
Thanks FvM, I didn't exactly assume they were interconnected, but had read a few things about previous PICs using the same hardware for both systems, so thought maybe it's best to not risk a conflict if I had the pins / layout available.
Had also read something about SDI1 not compiling correctly with certain versions of CCS, and that it kept recurring in subsequent releases. At the moment I'm probably only using 1/4 of the pins available, so if I can remap and avoid systems that may or may not be buggy, then possibly it might save me hours/days trying to track down a fault.
Not that I've even got it breadboarded yet, still got the old PIC18F2620 in the breadboard, and haven't connected up any of the I2C or SPI stuff; figure I may as well make the jump to the 24F first before going any further. |
|
![](templates/subSilver/images/spacer.gif) |
FvM
Joined: 27 Aug 2008 Posts: 2337 Location: Germany
|
|
Posted: Thu Mar 01, 2012 6:09 am |
|
|
Yes, PIC18 has a common SPI/I2C module.
Previous PCD versions had various issues, also related to peripheral pin select functionality and SPI built-in functions. Recent versions are performing well at least with all popular chips. In case, you have still the option to implement an intended function by accessing SFRs directly.
Quote: | figure I may as well make the jump to the 24F first before going any further | You should definitely try, I guess you'll like it. |
|
![](templates/subSilver/images/spacer.gif) |
jeremiah
Joined: 20 Jul 2010 Posts: 1328
|
|
Posted: Thu Mar 01, 2012 8:22 am |
|
|
I work with that exact PIC in a lot of projects, including some that involve I2C. Just some notes:
1. Take a look at the errata for that PIC (available from Microchip's website). There are some issues with earlier revisions of the chip's I2C module. If you can, try to get a PIC with a lot number starting with 10 (I think if it starts with 09 that is still ok. I know most of the 08 ones had some old problems). That's the year the lot was done. The earlier revision of the chip (I want to say A3 and A4 off the top of my head) had some I2C issues, though there are work arounds if you do have an older revision.
2. I've actually had trouble running I2C2 as hardware. It's supposed to work, but I have yet to get it there (probably I am doing something wrong, but I tried disabling everything I could on those pins and still had no luck). I've had no problems out of I2C1 though, well with #1 taken into account. What I have done to work around those problems was, if I needed to use I2C2 for something, I tried to make sure it was the simpler module and used a SW I2C on it. |
|
![](templates/subSilver/images/spacer.gif) |
RoGuE_StreaK
Joined: 02 Feb 2010 Posts: 73
|
|
Posted: Thu Mar 01, 2012 9:04 pm |
|
|
Thanks jeremiah; is that the number like "1002GUA" on the end? If so, then yeah I've got "10" ones at the moment (obviously). I'd imagine any future purchases direct from Microchip would be later dated, or should I still keep an eye out?
Good to know about the I2C2, I was going to only be using I2C1 anyway but always nice to know any potential issues. At the moment I only have to interact with one I2C chip and one SPI chip, so hopefully issues will be minimised. Being SMD chips, I need to make breakout boards anyway, so I'm leaning more towards getting the entire hardware design finished and some cheap "proper" boards made up by Seeed, so hardware should be good and just have to tweak the coding. In theory. |
|
![](templates/subSilver/images/spacer.gif) |
jeremiah
Joined: 20 Jul 2010 Posts: 1328
|
|
Posted: Thu Mar 01, 2012 9:42 pm |
|
|
Yes, that should be the lot number. The first two digits are the 2 digit year. It isn't easy to tell a specific lot number by that, but if you look at the revision history of the errata you can get a general idea of when a particular revision was released and if your lot number is higher, there is a good chance you have that revision or newer. |
|
![](templates/subSilver/images/spacer.gif) |
|