Jump to content
IGNORED

2 wire serial EEPROM and 9901


Recommended Posts

Does anyone here have experience with 2-wire serial EPROMs? I'm looking for one that could easily interface with the 9901. While I could probably squeak by with 128 bytes, I would certainly not be opposed to larger sizes up to 256K. What I'd like to do is connect the clock and serial data pins to the 9901, using two unused pins. I'd then use the serial eeprom to store configuration information for the Geneve and its devices.

 

20-odd years ago Jim S. had interfaced a serial eprom to the Geneve to provide Cecure a hardware-based copy protection. Thus I know a 2-wire device can be implemented, I just don't know what is available today that might work well for this application.

 

  • Like 1
Link to comment
Share on other sites

If you're talking about an I2C EEPROM, you can implement an I2C interface easily on a 9901 - I done one using the joystick port.

 

http://www.stuartconner.me.uk/ti/ti.htm#i2c_interface

 

https://learn.sparkfun.com/tutorials/reading-and-writing-serial-eeproms

 

Edit: Ideally you'll need *three* unused pins on the 9901 to implement an I2C interface: one to drive the clock, one to output data, and another to input data - because once you programme a pin on the 9901 as an output, you can't use it again as an input unless you do a hard or soft reset of the 9901. You might be able to get away with doing a soft reset at the point where you want to switch between reading and writing the interface, depending on what happens to the clock output at the point you do the reset (will it float high or low, and what does the I2C interface expect on the clock output at that point?), and what other things are connected to the 9901.

Edited by Stuart
  • Like 1
Link to comment
Share on other sites

Thanks, Stuart, I'll take a closer look at your site. Here is one of the snips of code I came across. The routine appears to use three CRU bits. I cannot find any records that indicate which chip was used back then, but the concept seems to be similar to what you describe. Knowing the I2C interface works well is already one step ahead of where I was the other day :)

 

 

 

 

       DEF UPROG,SFIRST,SLOAD,SLAST
HIWS   EQU  >F000        my hi workspace
       DXOP CALL,0       define CALL as meaning XOP 0

SK     EQU 19
CS     EQU 21
IN     EQU 24
OUT    EQU 24


*
* preliminaries; request memory, fetch argument line etc
*
SFIRST
SLOAD
UPROG  LWPI HIWS         use a fast workspace
       LIMI 0
       CLR  R12
       LI   R1,>1200
       MOVB R1,@>F112
RDPROM
       CLR  R8
       LI   R10,BUFFER
       LI   R9,BUFF2
       CLR  R6
       SBO  IN
LOOP1  SBZ  SK
       SBO  CS
       SBZ  SK
       SBO  SK
       BL   @SNDBYT
       SBO  IN
       LI   R12,>0030
       STCR R6,1
       CLR  R12
       SBZ  SK
       SBO  SK
RDLOOP
       BL   @RCVBYT
       MOV  R6,*R10+
       MOV  R6,*R9+
       SBZ  CS
       INC  R8
       CI   R8,63
       JNE  LOOP1
       SBZ  SK
       BL   @TTYOUT
       DATA BUFF0
       BLWP @0


SNDBYT
        MOV  R8,R3
        AI   R3,>0080
        LI   R2,8
        SRC  R3,15
SLOOP
        LI   R12,>0030
        LDCR R3,1
        MOVB R3,*R9+
        SRC  R3,15
        CLR  R12
        SBZ  SK
        SBO  SK
        DEC  R2
        JNE  SLOOP
        RT

RCVBYT  LI   R2,16
        CLR  R6
RLOOP
        CLR  R5
        SLA  R6,1
        SBZ  SK
        SBO  SK
        LI   R12,>0030
        STCR R5,1
        SWPB R5
        A    R5,R6
        CLR  R12
        DEC  R2
        JNE  RLOOP
        SRL  R6,1
        SWPB R6
        RT

TTYOUT LI   R0,>27
       LI   R1,HIWS+8   MSB R4
       LI   R2,1
       MOV  *R11+,R3     STRING ADDRESS
TTY1   MOVB *R3+,R4      GET NEXT CHAR
       JEQ  TTY2         IF DONE
       CALL @VIDEO
       JMP  TTY1
TTY2   RT


*
* MDOS SYSTEM CALL PARAMETERS
*
BUFF0  BYTE  12,10
BUFFER BSS  126
       BYTE 10,10,10,13,0
BUFF2  EQU >4000
*                 0   1    0   0    0   0
KEY    DATA 5            keyscan xop
VIDEO  DATA 6            video xop
MEM    DATA 7            memory manager xop
DSK    DATA 8            i/o xop
UTL    DATA 9            utility xop
SLAST  DATA 0
       END

 

 

 

Link to comment
Share on other sites

I'm using FRAM in my designs at work. I've stopped bothering with Flash completely.

 

Some devices:

  • Fujitsu MB85RC256V - 32x8 bit I2C FRAM - 2.0 V to 3.6 V
  • Fujitsu MB85RC128 - 16kx8 bit I2C FRAM - 2.7 V to 3.6 V
  • Cypress FM24V10 - 1-Mbit 128K × 8 Serial I2C F-RAM - 2.7 V to 5.5 V

FRAM (a Texas Instruments invention) has considerable advantages over Flash memory:

  • High-endurance 100 trillion (10 ) read/writes
  • 151-year data retention
  • No-Delay writes
  • Advanced high-reliability ferroelectric process
  • No complex page setup/incantations to write to memory - for reads and writes, the devices are addressable at the byte level; there's no page-level wear-management issues to worry about

All of the above devices at simple 8-pin devices. They are surface mount but there are little adaptor boards available if you want to use 2.54mm DIL.

 

Data sheets attached.

 

Have fun :-)

 

FM24V10 128Kx8 I2C FRAM Datasheet.pdf

Fujitsu-MB85RC128PNF-G-JNE1-datasheet.pdf

MB85RC256V.pdf

  • Like 6
Link to comment
Share on other sites

I've been a fan of FRAM ever since I wandered by the lab door of RamTron at UCCS.

Texas Instruments has licensed it and brought it into the mainstream after 30 years.


Here is a neat TI LaunchPad board with '430 CPU with on-chip FRAM that can run several flavors of FORTH.

It often goes on sale for $4.30


  • Like 1
Link to comment
Share on other sites

I'm using FRAM in my designs at work. I've stopped bothering with Flash completely.

 

Some devices:

  • Fujitsu MB85RC256V - 32x8 bit I2C FRAM - 2.0 V to 3.6 V
  • Fujitsu MB85RC128 - 16kx8 bit I2C FRAM - 2.7 V to 3.6 V
  • Cypress FM24V10 - 1-Mbit 128K × 8 Serial I2C F-RAM - 2.7 V to 5.5 V

FRAM (a Texas Instruments invention) has considerable advantages over Flash memory:

  • High-endurance 100 trillion (10 ) read/writes
  • 151-year data retention
  • No-Delay writes
  • Advanced high-reliability ferroelectric process
  • No complex page setup/incantations to write to memory - for reads and writes, the devices are addressable at the byte level; there's no page-level wear-management issues to worry about

All of the above devices at simple 8-pin devices. They are surface mount but there are little adaptor boards available if you want to use 2.54mm DIL.

 

Data sheets attached.

 

Have fun :-)

 

attachicon.gifFM24V10 128Kx8 I2C FRAM Datasheet.pdf

attachicon.gifFujitsu-MB85RC128PNF-G-JNE1-datasheet.pdf

attachicon.gifMB85RC256V.pdf

 

 

These are new to me, being out of the industry for 20 years.

 

Do you use these like disk and read the data into RAM at startup?

 

Does anybody make them with address/data buss access like static RAM?

(maybe not needed, if they are fast enough using serial)

 

B

Link to comment
Share on other sites

 

 

These are new to me, being out of the industry for 20 years.

 

Do you use these like disk and read the data into RAM at startup?

 

Does anybody make them with address/data buss access like static RAM?

(maybe not needed, if they are fast enough using serial)

 

B

Sounds like a new version of SAMS to me. ;)

Link to comment
Share on other sites

 

 

These are new to me, being out of the industry for 20 years.

 

Do you use these like disk and read the data into RAM at startup?

 

Does anybody make them with address/data buss access like static RAM?

(maybe not needed, if they are fast enough using serial)

 

 

 

No, you literally use them as RAM. Read/Write from/to them as you want with impunity. The only difference is they are serial devices (I haven't seen one with a parallel address/data bus).

 

When the power goes off they retain their contents, unlike traditional ram.

 

The "F" in FRAM refers to "ferro". Remember those old magnetic core, or "bubble" memories? The FRAM is based on the same technology, just scaled right down to the micron level. Incredible.

 

You can't get anything like the density of modern DDR type "computer" memory. The biggest I've seen is 128KB, but for embedded projects that's perfect. Flash is a major pain the a$$ to work with.

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...