Shop OBEX P1 Docs P2 Docs Learn Events
QuickStart Rev A vs Rev B? — Parallax Forums

QuickStart Rev A vs Rev B?

David BetzDavid Betz Posts: 14,516
edited 2014-03-13 19:18 in Propeller 1
I just spent a couple of days trying to determine why my RamPage2 driver didn't work. Just to make sure that my QuickStart board wasn't bad I switched to another and the driver worked on the second board. I noticed that the first board was Rev A and the second Rev B. To determine whether the revision made a different I tried a second Rev A and a second Rev B board and got the same results. It looks like my RamPage2 driver doesn't work on Rev A QuickStart boards. What is the difference between these two revisions? Is there anything that would explain why the driver would work on Rev A but not Rev B? It looks like I have a number of QuickStart Rev A boards that aren't going to be useful to me.

Edit: Looks like I have three Rev A QuickStart boards that won't work with my RamPage2 driver. I also wonder if this is one of the problems I was having with the Propeller Memory Card a while back.
«1

Comments

  • Duane DegnDuane Degn Posts: 10,588
    edited 2013-12-29 19:17
    How old are your Rev A boards?

    The first QuickStart boards only had 32K EEPROMs could this make a difference in your driver (I thought I read some C drivers use the upper EEPROM)?

    I have a program to test between 32K and 64K boards if you think the EEPROM could be the problem.

    The 32K versions weren't made for very long so it seems odd you would have three of them.
  • David BetzDavid Betz Posts: 14,516
    edited 2013-12-29 19:27
    Duane Degn wrote: »
    How old are your Rev A boards?

    The first QuickStart boards only had 32K EEPROMs could this make a difference in your driver (I thought I read some C drivers use the upper EEPROM)?

    I have a program to test between 32K and 64K boards if you think the EEPROM could be the problem.

    The 32K versions weren't made for very long so it seems odd you would have three of them.
    You're correct that PropGCC supports an EEPROM cache driver but I'm not using that so a 32k EEPROM should be fine. Also, I'm not even trying to write my program to EEPROM. Thanks for the suggestion though.
  • jazzedjazzed Posts: 11,803
    edited 2013-12-29 19:43
    The differences I've noted:

    Quickstart Rev.A: FT232 and Buffered Rx/Tx lines for Propeller.
    Quickstart Rev.B: FT231 and Buffered Tx line to Propeller (pull up not required).

    Consequences:
    Rev.B boards will no longer spit random characters to the terminal Yahoo!!!
    Rev.B boards will not be found on older Linux OS (same for ActivityBot).

    Propeller GCC can use up to 54KB of a 64KB EEPROM for XMMC programs.
  • kuronekokuroneko Posts: 3,623
    edited 2013-12-29 19:46
    From a quick glance rev B only had changes in the USB to serial area. Could it be a routing/layout issue again (crosstalk)? Does the driver work at e.g. 5MHz (or RCFAST)?
  • David BetzDavid Betz Posts: 14,516
    edited 2013-12-29 19:47
    jazzed wrote: »
    The differences I've noted:

    Quickstart Rev.A: FT232 and Buffered Rx/Tx lines for Propeller.
    Quickstart Rev.B: FT231 and Buffered Tx line to Propeller (pull up not required).

    Consequences:
    Rev.B boards will no longer spit random characters to the terminal Yahoo!!!
    Rev.B boards will not be found on older Linux OS (same for ActivityBot).
    Why won't Rev B boards be found by older Linux systems?
  • jazzedjazzed Posts: 11,803
    edited 2013-12-29 19:55
    David Betz wrote: »
    Why won't Rev B boards be found by older Linux systems?
    Because that's what the FT231X documentation says: "Linux 3.2 and greater"
    1.1 Driver Support
    Royalty free VIRTUAL COM PORT
    (VCP) DRIVERS for...
     Windows 8 32,64-bit
     Windows 7 32,64-bit
     Windows XP and XP 64-bit
     Windows Vista and Vista 64-bit
     Windows XP Embedded
     Windows CE 4.2, 5.0 and 6.0
     Mac OS-X
     [B]Linux 3.2 and greater[/B]
     Android
    
  • David BetzDavid Betz Posts: 14,516
    edited 2013-12-29 19:56
    jazzed wrote: »
    Because that's what the FT231X documentation says: "Linux 3.2 and greater"
    1.1 Driver Support
    Royalty free VIRTUAL COM PORT
    (VCP) DRIVERS for...
     Windows 8 32,64-bit
     Windows 7 32,64-bit
     Windows XP and XP 64-bit
     Windows Vista and Vista 64-bit
     Windows XP Embedded
     Windows CE 4.2, 5.0 and 6.0
     Mac OS-X
     [B]Linux 3.2 and greater[/B]
     Android
    
    So there just isn't a driver for the older Linux systems. I guess that's not so bad. People can upgrade to a newer Linux I guess. I thought you meant that there was some problem with detecting the FTDI chip.
  • jmgjmg Posts: 15,173
    edited 2013-12-29 19:58
    David Betz wrote: »
    Why won't Rev B boards be found by older Linux systems?

    I'm guessing the post really meant Older Linux systems with older FTDI drivers that pre-date the FT231 ?

    I think you have the reverse problem - you can see FT231, but not FT232, right ?

    What does a Terminal pgm do - can that find the FT23x and echo chars ok, and control the RST line ok ?

    Did you try a FTDI driver update ?
  • jazzedjazzed Posts: 11,803
    edited 2013-12-29 19:59
    David Betz wrote: »
    So there just isn't a driver for the older Linux systems. I guess that's not so bad. People can upgrade to a newer Linux I guess. I thought you meant that there was some problem with detecting the FTDI chip.
    Ya the problem is only on older Linux systems, and I can't get the new stuff to compile to save my life. Took me a long time to figure this stuff out - just thought I'd share.
  • David BetzDavid Betz Posts: 14,516
    edited 2013-12-30 04:41
    kuroneko wrote: »
    From a quick glance rev B only had changes in the USB to serial area. Could it be a routing/layout issue again (crosstalk)? Does the driver work at e.g. 5MHz (or RCFAST)?
    That's a good idea. I don't think the propgcc external memory loader will work with RCFAST but I can certainly reduce the clock rate below 80mhz to see if that will help. Thanks for the suggestion!
  • kuronekokuroneko Posts: 3,623
    edited 2013-12-30 04:59
    I was thinking more along the lines of having a test program which is loaded at normal speed (e.g. 80MHz) but slows down programmatically for the actual test (and speeds up afterwards if needed). Anyway, let us know what you find.
  • David BetzDavid Betz Posts: 14,516
    edited 2013-12-30 06:46
    kuroneko wrote: »
    I was thinking more along the lines of having a test program which is loaded at normal speed (e.g. 80MHz) but slows down programmatically for the actual test (and speeds up afterwards if needed). Anyway, let us know what you find.
    I hadn't thought of that. I guess I can try that approach as well. Unfortunately, I'm back to my day job today so I'm not sure when I'll have time for this again. Thanks for your ideas!
  • David BetzDavid Betz Posts: 14,516
    edited 2013-12-30 07:29
    kuroneko wrote: »
    I was thinking more along the lines of having a test program which is loaded at normal speed (e.g. 80MHz) but slows down programmatically for the actual test (and speeds up afterwards if needed). Anyway, let us know what you find.
    Okay, what's the recommended way to change the clock settings on the fly? I may still have trouble even if I run the loader at full speed because the test program itself prints text back to the PC using a serial connection. What is the baud rate limit for RCFAST?
  • David CarrierDavid Carrier Posts: 294
    edited 2013-12-30 12:00
    Concerning the differences between Rev A and Rev B of the Propeller QuickStart, here's the breakdown:

    Rev A
    • First run had 32 KB EEPROM (Only a few hundred), all others had 64 KB EEPROM
    • Uses an FT232R series USB to serial converter
      • Does not support USB charging specification, so it can only be powered from a computers USB port, not a USB charger
      • Cannot be programmed from the 40-pin header
      • Uses a bidirectional buffer to prevent the FT232R IC and Propeller Microcontroller from parasitically powering each other through their respective IO pin's ESD protection diodes
        • This increases the chances of the USB to serial converter receiving random data when the Propeller hasn't initialized the serial port
      • Works with older FTDI drivers
    • The /USB_PWR_EN does not include a protection diode, so it can only be externally driven low

      • It is not feasible to use /USB_PWR_EN to force the board to power down while it is receiving USB power, but the FT232R can be reprogrammed to not enable USB power
    • The Propeller Microcontroller is directly connected to the 3.3 volt supply, so it is difficult to measure its power consumption
    • The 40-pin header only allows connections through the top side and there are only pin number labels for pins 1, 2,39, and 40
    • Labels and marking on the board are for the P8X32A QuickStart from Parallax Semiconductor and do not include the Open Source Hardware logo
    Rev B
    • All units have 64 KB EEPROM
    • Uses an FT231X series USB to serial converter
      • Supports USB charging specification, so it can be powered from a USB charger
      • Can be programmed from the 40-pin header
      • Uses a single-bit buffer to prevent the FT231X IC from parasitically powering the Propeller Microcontroller through an ESD protection diode
        • The FT231X IC's receive pin is directly connected to the Propeller Microcontroller, which reduces the chances of the USB to serial converter receiving random data when the Propeller hasn't initialized the serial port
      • Requires newer FTDI drivers
    • The /USB_PWR_EN includes a protection diode, so it can be externally driven high or low

      • Driving /USB_PWR_EN high (usually 5 V, depend on exact voltage of USB supply) removes USB power from the 3.3 V regulator input
    • The Propeller Microcontroller is connected to the 3.3 volt supply through a 0-ohm resistor, which can be removed to measure power consumption
    • The 40-pin header allows connections through the top and bottom sides and includes pin function labels on the bottom side
    • Labels and marking on the board are for the Propeller QuickStart from Parallax and include the Open Source Hardware logo
    We've also found that the Linux kernel drivers for the FT231X intermittently lose data in Ubuntu 13.04 (kernel 3.8) but work fine in Ubuntu 13.10 (kernel 3.11).

    — David Carrier
    Parallax Inc.
  • jazzedjazzed Posts: 11,803
    edited 2013-12-30 12:20
    Thanks for this update David Carrier!
  • David BetzDavid Betz Posts: 14,516
    edited 2013-12-30 12:40
    Concerning the differences between Rev A and Rev B of the Propeller QuickStart, here's the breakdown:
    Thanks for the detailed description of the differences between Rev A and Rev B. Any idea which of those changes might have caused my RamPage2 driver to start working? It seems like the RamPage2 driver has trouble driving P0-P7 all at the same time since I'm able to use the PMC driver successfully with the RamPage2 board and that only uses 4 data lines instead of 8. Can you think of anything I can do to enable my driver to work with the Rev A board? I'm attaching the source code in case you'd like to take a look at it.

    Thanks,
    David

    rampage2_sram_xmem.spin
  • Duane DegnDuane Degn Posts: 10,588
    edited 2013-12-30 13:04
    The 40-pin header allows connections through the top and bottom sides and includes pin function labels on the bottom side.

    Very cool!

    Did this require a different part to use as the header?

    It looks like pins bottom out at the PCB on Rev. A board. Were drilling the holes and moving the traces the only changes required to allow connection from the bottom of the board?

    Sorry David, I suppose this is a bit OT. I sure don't see any reason why your driver would work on one and not the other.

    P0 - P7 are all touchpad pins. Did the geometry of the pads change? It doesn't look like it, but the routing to the pads had to change to make the extra holes under the header.
  • David CarrierDavid Carrier Posts: 294
    edited 2013-12-30 13:14
    David Betz,

    I don't see anything off hand that would make it work in a Rev A board but not in a Rev B board. The changes are all related to power switching and the serial/USB port on P30 and P31. Since you aren't using P30 or P31 the change to the FT231X shouldn't make a difference. The voltage regulator itself didn't change, but my best guess is that there is something power related that is stopping it from working. The SST26VF016 devices can instantaneously change their current draw from less than 15 microamps in standby to typically 12 millamps while reading or up to 30 millamps when writing or erasing. The voltage pumps for programming and erasing can also create current oscillations that can mess with the 3.3 volt regulator's feedback loop. As a test, try connecting a 30 to 50 ohm half-watt resistor on J2 of the RamPage2 from VDD through to GND. It will draw a large amount of current so that current swings are less significant of a percentage of the total current draw. If that makes a difference, put more and larger bypass capacitors next to the flash memory and perhaps one large capacitor near the VDD input from the QuickStart.

    — David Carrier
  • jmgjmg Posts: 15,173
    edited 2013-12-30 13:21
    David Betz,
    I don't see anything off hand that would make it work in a Rev A board but not in a Rev B board.

    I think David says it works on Rev B, and not Rev A, but Rev A is ok in 4 bit mode test ?
  • David BetzDavid Betz Posts: 14,516
    edited 2013-12-30 14:05
    David Betz,

    I don't see anything off hand that would make it work in a Rev A board but not in a Rev B board. The changes are all related to power switching and the serial/USB port on P30 and P31. Since you aren't using P30 or P31 the change to the FT231X shouldn't make a difference. The voltage regulator itself didn't change, but my best guess is that there is something power related that is stopping it from working. The SST26VF016 devices can instantaneously change their current draw from less than 15 microamps in standby to typically 12 millamps while reading or up to 30 millamps when writing or erasing. The voltage pumps for programming and erasing can also create current oscillations that can mess with the 3.3 volt regulator's feedback loop. As a test, try connecting a 30 to 50 ohm half-watt resistor on J2 of the RamPage2 from VDD through to GND. It will draw a large amount of current so that current swings are less significant of a percentage of the total current draw. If that makes a difference, put more and larger bypass capacitors next to the flash memory and perhaps one large capacitor near the VDD input from the QuickStart.

    — David Carrier
    Thanks for the suggestions! FYI, the flash chips are working fine on the Rev A board. It's the SRAM chips that fail to work.
  • David BetzDavid Betz Posts: 14,516
    edited 2013-12-30 14:06
    jmg wrote: »
    I think David says it works on Rev B, and not Rev A, but Rev A is ok in 4 bit mode test ?
    Yes, Rev A works if I only use one flash chip and one SRAM chip at a time. It fails if I try to use both flash and SRAM chips. Actually, the flash chips work either way. It's the SRAM chips that fail if I try to run both at the same time with an 8 bit bus.
  • Duane DegnDuane Degn Posts: 10,588
    edited 2013-12-30 14:43
    David Betz wrote: »
    Yes, Rev A works if I only use one flash chip and one SRAM chip at a time. It fails if I try to use both flash and SRAM chips. Actually, the flash chips work either way. It's the SRAM chips that fail if I try to run both at the same time with an 8 bit bus.

    When I experimented with stacking 8 23K256 (I think that's what they're called) chips to form an 8-bit bus, I found any one chip would work but when accessing all chips at once I'd get an error. Adding additional caps near the Vdd pins of the SRAM solved the problem (as David Carrier suggested). IIRC, I needed to more than one size. I think I used a 0.1uF and an 1uF cap near the Vdd pins. I think I've made five different multi-SRAM boards and this was a common problem.
  • David BetzDavid Betz Posts: 14,516
    edited 2013-12-30 14:58
    These suggested changes are modifications to the RamPage2 board itself. Since I didn't design that board, I'm not sure it makes sense for me to try to make these changes. Maybe I can just say that the PropGCC RamPage2 driver only works with Rev B QuickStart boards and let Rayman modify his design if he wants it to also work on Rev A boards.
  • jmgjmg Posts: 15,173
    edited 2013-12-30 17:06
    David Betz wrote: »
    These suggested changes are modifications to the RamPage2 board itself. Since I didn't design that board, I'm not sure it makes sense for me to try to make these changes. Maybe I can just say that the PropGCC RamPage2 driver only works with Rev B QuickStart boards and let Rayman modify his design if he wants it to also work on Rev A boards.

    Yes, but it could be an idea to confirm caps do actually fix the problem ?
    You could also check if adding some NOPs to expand the critical times a little helps ?
    (I've seen lowered clocks help on ribbon cable programmers)
  • David BetzDavid Betz Posts: 14,516
    edited 2013-12-30 17:13
    jmg wrote: »
    Yes, but it could be an idea to confirm caps do actually fix the problem ?
    You could also check if adding some NOPs to expand the critical times a little helps ?
    (I've seen lowered clocks help on ribbon cable programmers)
    I might be trying to clock the chip too fast. Here is the code I use to send a sequence of bytes during a write:
    :loop   rdbyte  data, hubaddr
            add     hubaddr, #1
            shl     data, sio_shift
            andn    outa, sio_mask
            or      outa, data
            or      outa, sck_mask
            andn    outa, sck_mask
            djnz    count, #:loop
    
  • jmgjmg Posts: 15,173
    edited 2013-12-30 18:55
    something like this reshuffles, to expand the CLK hi time, and add more Tsu, but at no penalty to speed.
    :loop   rdbyte  data, hubaddr
            shl     data, sio_shift
            andn    outa, sck_mask
            andn    outa, sio_mask   ' Might be able to now merge these two lines 
            or      outa, data
            add     hubaddr, #1
            or      outa, sck_mask  ' assumes CLK _/= is active edge.
            djnz    count, #:loop
            andn    outa, sck_mask  ' optional, gives same exit condition as above
    
  • David BetzDavid Betz Posts: 14,516
    edited 2013-12-31 04:08
    jmg wrote: »
    something like this reshuffles, to expand the CLK hi time, and add more Tsu, but at no penalty to speed.
    :loop   rdbyte  data, hubaddr
            shl     data, sio_shift
            andn    outa, sck_mask
            andn    outa, sio_mask   ' Might be able to now merge these two lines 
            or      outa, data
            add     hubaddr, #1
            or      outa, sck_mask  ' assumes CLK _/= is active edge.
            djnz    count, #:loop
            andn    outa, sck_mask  ' optional, gives same exit condition as above
    
    I didn't do exactly this but I did add a bunch of nop instructions between setting and clearing the clock pin and that made it work even worse on the Rev A board. Now even the flash test doesn't work. However, both the flash and the SRAM test continue to work fine on the Rev B board.
    :loop   rdbyte  data, hubaddr
            add     hubaddr, #1
            shl     data, sio_shift
            andn    outa, sio_mask
            or      outa, data
            or      outa, sck_mask
            nop
            nop
            nop
            nop
            nop
            andn    outa, sck_mask
            djnz    count, #:loop
    
    I don't have a 30-50 ohm 1/2 watt resistor so I haven't tried David's suggestion yet. I'll have to drive by RadioShack later to pick one up.
  • jmgjmg Posts: 15,173
    edited 2013-12-31 12:06
    David Betz wrote: »
    I didn't do exactly this but I did add a bunch of nop instructions between setting and clearing the clock pin and that made it work even worse on the Rev A board. Now even the flash test doesn't work. However, both the flash and the SRAM test continue to work fine on the Rev B board.

    If it changed, it confirms edge timing matters :)

    With clk-slew/bounce issues, it can also help to shift the Data well clear of the CLK (above, I moved a can-go-anywhere line to do this, but you can also pack with NOPs for testing like this :
    :loop   rdbyte  data, hubaddr
            add     hubaddr, #1
            shl     data, sio_shift
            andn    outa, sio_mask
            or      outa, data
            nop
            nop
            nop
            nop
            or      outa, sck_mask
            nop
            nop
            nop
            nop
            nop
            andn    outa, sck_mask
            djnz    count, #:loop
    
  • Too_Many_ToolsToo_Many_Tools Posts: 765
    edited 2014-03-08 22:25
    So how did this saga end?

    Is A or B "better?
  • Too_Many_ToolsToo_Many_Tools Posts: 765
    edited 2014-03-08 22:27
    David Betz wrote: »
    I didn't do exactly this but I did add a bunch of nop instructions between setting and clearing the clock pin and that made it work even worse on the Rev A board. Now even the flash test doesn't work. However, both the flash and the SRAM test continue to work fine on the Rev B board.
    :loop   rdbyte  data, hubaddr
            add     hubaddr, #1
            shl     data, sio_shift
            andn    outa, sio_mask
            or      outa, data
            or      outa, sck_mask
            nop
            nop
            nop
            nop
            nop
            andn    outa, sck_mask
            djnz    count, #:loop
    
    I don't have a 30-50 ohm 1/2 watt resistor so I haven't tried David's suggestion yet. I'll have to drive by RadioShack later to pick one up.

    LOL..the comment about stopping by RS to get a component is ironic considering the situation at RS.

    I would agree that having a B&M presence matters.......sometimes you need something RIGHT NOW!
Sign In or Register to comment.