-         

Ergebnis 1 bis 9 von 9

Thema: M16C und EEPROM bzw. FeRAM

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    07.11.2006
    Beiträge
    5

    M16C und EEPROM bzw. FeRAM

    Anzeige

    Hallo Zusammen,

    Ich will gerne Daten von EEPROM(93LC76/86) bzw. FeRAM(FM25640-S) auslesen und drauf schreiben.

    PSas soll über UART2 gehen und mein Mikrocontroller ist ein M16c6n-Group.

    Weil ich in diesem Bereich Einsteiger bin und nicht viele Erfahrung damit habe,hoffe ich mal ,dass jemand mir hier dabei helfen kann,der schon Erfahrung damit hat.
    Dankefür Eure Hilfe im Voraus.
    Gruss Prem

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.08.2004
    Ort
    Unterschleissheim
    Beiträge
    218
    Der FM25640-S hat eine SPI-Schnittstelle. Im datenblatt steht auch, wie man diese simulieren kann. Eine UART-Schnittstelle funktioniert da vermutlich nur, wenn man sie auf 8 Bit zwingen kann, also kein Start- und kein Stopbit, kein CRC, nur 8 Datenbit. Bist du sicher, dass dein Mikrocontroller keine SPI (TWI) Schnittstelle haz ?

    Gerhard

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    07.11.2006
    Beiträge
    5
    Hallo,

    Der M16C6n hat doch eine SPI Schnittstelle,wieso denn?

    In der App-Note steht ein Beispiel mit dem UART2,aber bei dem feht die wichtigste Methode "write()",so sieht meine Methode aus,aber geht immer noch nicht.

    char FR_main_write( u16 addr , u08 daten)
    {
    unsigned char status;
    if(addr>=FRAM_SIZE || daten >= (char)FRAM_SIZE){
    status = CONTROLLER_ERROR_BAD_ADDRES;
    return status;
    }else {
    FR_write_enable();
    uart_begin(WRITE);
    uart_tx(addr);
    //FR_write_enable();
    uart_tx(daten);
    status=CONTROLLER_WRITE_OK;
    uart_end();
    }


    return status;
    }

    wobei FRAM_SIZE=2048 ist.

    Vielen Danke im Voraus

    Gruß
    PREM

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.08.2004
    Ort
    Unterschleissheim
    Beiträge
    218
    Hallo

    wie hast du den denn angeschlossen ? UART arbeitet mit einem eignen Clock (Baudrate), die musst du ja irgendwie rausgeführt haben und an das Bauteil anschliessen. Und wie ist deine UART-Schnittstelle konfiguriert ? Ein Takt wird bei SPI nur generiert, wenn Daten übertragen werden. Wo kommt also der Takt her ?

    Gerhard

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    07.11.2006
    Beiträge
    5
    Hallo,

    Zitat Zitat von gunzelg
    Hallo

    wie hast du den denn angeschlossen ? UART arbeitet mit einem eignen Clock (Baudrate), die musst du ja irgendwie rausgeführt haben und an das Bauteil anschliessen. Und wie ist deine UART-Schnittstelle konfiguriert ? Ein Takt wird bei SPI nur generiert, wenn Daten übertragen werden. Wo kommt also der Takt her ?

    Gerhard
    Also ich hab folgendes gemacht:

    Portinitaliesierung:

    Code:
    void initPort (void) {
    
    
    	write_protect=0;
    	prc2=1;			//Enable writing  to port p9 directions register 
    	pd9_3=port_ausgabe;	//p9 direction register 
    	
    
    	
    	chipselect=0;				
    	prc2=1;		    //Enable writing  to port p9 directions register 
    	pd9_4=port_ausgabe;	//P9 direction register
    
    	return;
    }
    Clockinitialisierung:

    Code:
    void initClock(void)
    {	
            prc0 = 1; 		// unprotect cm1&0
    								
    	cm0 = 0x18; 	     // div-by-1 mode  *High-speed mode (BCLK.)
    
    	prc0 = 0; 				// protect all
    
    	return;
    
    }
    UART2initialiesierung:

    Code:
    void UART2_init(void)
    {
    
    
    	// configure UART2 to be compatible with SPI Mode 3
    
    	special_mode_register = 0x00;			 
    						
    	transmit_receive_mode_register = 0x01; 	
    
    	transmit_receive_mode_register_0 = 0x90;	
    
    	transmit_receive_mode_register_1 = 0x00;	
     
    	bit_rate_generator = 0x05; 				
    	
    	return;
     
     
    }

    Chipselect(CS) ist mit dem P9_3 und Programenable(PE) ist mit dem P9_4 angeschlossen.

    Hab ich hier was falsches gemacht?
    muss man den Port von Clock auch initialiesiren (SKL mit p9_0)?

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.08.2004
    Ort
    Unterschleissheim
    Beiträge
    218
    Dass eine Initialisierung des UART für SPI bereits vorgesehen ist, stimmt ja optimistisch, allerdings weiss ich jetzt immer noch nicht, wie du physikalisch den Speicherchip angeschlossen hast. Der Speicherchiop braucht einen Clock, wo kommt der her, und wie wird der erzeugt. Der muss synchron zu den daten des UART erzeugt werden. Also idealerweise ist das der audrate-Clock, so wie er für synchrone serielle datenübertragungen verwendet wird.

    Gerhard

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    07.11.2006
    Beiträge
    5
    Hallo,

    Zitat Zitat von gunzelg
    Dass eine Initialisierung des UART für SPI bereits vorgesehen ist, stimmt ja optimistisch, allerdings weiss ich jetzt immer noch nicht, wie du physikalisch den Speicherchip angeschlossen hast. Der Speicherchiop braucht einen Clock, wo kommt der her, und wie wird der erzeugt. Der muss synchron zu den daten des UART erzeugt werden. Also idealerweise ist das der audrate-Clock, so wie er für synchrone serielle datenübertragungen verwendet wird.

    Gerhard
    Danke Dir ertsmal für deine Fragen,im Anhang sthet einen Teil von dem Schaltbild was man in dieser Stelle braucht.

    Wenn Du schon mit ähnlicher Entwicklung/Impementierung befasst hast ,vielleicht kannst Du mir eine andere Möglichkeit mit einem Beispiel nennen,das wäre ganz nett von Dir

    Gruss Prem
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken eeprom.gif   m16c.gif  

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.08.2004
    Ort
    Unterschleissheim
    Beiträge
    218
    Soviel kann ich da nicht berichten. ich habe bisher nur einen SPI-Temperaturwandler an einen uC angeschlossen. Ein EEPROM steht mir demnächst bevor. Der uC den ich verwende hat aber einen SPI-Mode. Da werden nur die dazugehörigen register konfiguriert und fertig.

    Von SPI weiss ich halt, dass dort z.B. nur ein Takt erzeugt wird, wenn Daten übertragen werden. Evtl musst du da mal ein oszi bemühen und überprüfen, ob beim daten senden auf der E_SIN-leitung was kommt und ob da auch die dazugehörigen Taktpulse erzeugt werden. Wenn man bestimmte Bitmuster schickt, z.B 0x55, kann man überprüfen, ob der Takt auch synchron mit jedem Datenbit erzeugt wird.

    Gerhard

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    07.11.2006
    Beiträge
    5
    Ich hab den Clock auch initialiesiert p9_0 ,Mit Oscilo. wird sich aber keine Änderung auf die Leitunf davon geben.

    Deinen Vorschlag werde ich jetzt probieren,bis dann

    Prem

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •