A/D-Wandler Xlinx-Board

Gast #1017530
Lesenswert?

Hallo zusammen,

ich habe ein Xlinx-Board Spartan-3E Starter Kit.
ich habe ein kleines Programm geschrieben, und möchte damit testen, ob 
der ADC (LTC1407A) richtig wandelt, ich kann mit meinem Logic analysator 
keine SDO Daten sehen außer mein clock und mein befehl zum ADC 
(ADC_conv). der SDO Pin von ADC ist immer auf 1.
Die 8-Bit (SDI), die ich zum Vorverstärkung schicke, kann ich auch 
sehen.
Was mache ich den falsch????
Danke im Voraus.

P.S.: auf Xilinx seite ist ein fehler im Doko. ADC und Vorverstärkung 
sind vertaucht.

http://www.xilinx.com/support/documentation/boards...
Kapitel 10 Seite 75.
#1017659
Lesenswert?

Liegt vielleicht daran das du nicht genug Informationen geliefert hast. 
Lese doch mal deine Fehlerbeschreibung durch und versetze dich dann in 
die Lage von jemanden der nicht deine Hardwarebeschreibung kennt.

Welche Hilfe könntest du denn dann geben?

Die allgemeinen Tipps die mir einfallen sind:

1. Funktioniert die Hardwarebeschreibung in der Simulation?
2. Synthesiert die Hardwarebeschreibung und weist du genau was hinter 
etwaigen Warnungen steht? Sind die Warnungen unbedeutend für die 
Funktion?
3. Ist in dem UCF-File die Pinbelegung richtig gewählt?
Gast #1017675
Lesenswert?

Danke erstmal,

alles scheint in Ordnung zu sein
Die Hardwarebeschreibung Funktioniert in der Simulation, und
ich habe die Pinbelegung in UCF-File kontrolier, die sind in Ordnung.
das problem ist, dass der ADC keine Daten auf dem SPI-Bus schickt.
Auf dem SPI-Bus kann ich nur mein Clock und den Befehl für die 
convertierung sehen. SDO vom ADC ist immer auf High.
Gast #1017699
Lesenswert?

Hast du berücksichtigt, dass der SPI-Bus vom Amplifier und vom ADC
gemeinsam genutzt werden?
Ist dein Clock-Signal zum Amplifier eine 10MHz-Clock (siehe Spec),
die Clock des ADC eine 50MHz-Clock?
Hast du mal versucht, die Amp-Spannung am Amplifier-Ausgang zu messen
(einfach mal konst. Spannung am Eingang anlegen)?
Gast #1018155
Lesenswert?

@Gast:

Was passiert denn an Pin 10 (CONV)?
Sehen Deine Diagramme auf dem Logic Analyzer so aus, wie im Datenblatt 
Seite 9 und 10? Lies Dir auch mal Seite 16 durch, die Datenblätter von 
LT sind nicht die schlechtesten.

Duke
Angehängte Dateien:
Gast #1018239
Lesenswert?

der Amplifier funktioniert sehr gut. Ich habe die Spannung am Ausgang 
gemessen und gerechnet, ist in Ordnung.
in Pin 10 sieht es genau wie im DatenBlatt.
das befehl geht normalerweise zu einer Diode, aber ich habe die Pine 
geändert im .ucf File. P11 in "fpga_0_LEDs_8Bit_GPIO_d_out_pin<0>".
ich habe den Byte zum Amplifier mit der funktion "XSpi_mSendByte" 
geschickt.

so sieht ein Teil meines Program aus.
int main (void)
{
  int i;
  xil_printf("Timer Test\n\r");
  XStatus Status;
  XGpio_Initialize(&GpioOutput,XPAR_LEDS_8BIT_BASEADDR);
  XGpio_SetDataDirection(&GpioOutput, 1, 0x0);
   XGpio_DiscreteWrite(&GpioOutput, 1, 0x0);





  Xuint8   NumBytesRcvd, mfg_id, did_up, did_low, error, SF_sr;
  Xuint16  sector_select, page_select;
  Xuint16  spi_control_reg;

// Initialisierung

  Initialize_Spi_Controller(XPAR_SPI_FLASH_BASEADDR);




  send_data[0] = 4;
  send_data[1] = 6;
  send_data[2] = 10;
  send_data[3] = 12;
  XSpi_Set_Enable(XPAR_SPI_FLASH_BASEADDR);

  // Assert the select line manually to the SPI Flash ?????
 XSpi_mSetSlaveSelectReg(XPAR_SPI_FLASH_BASEADDR, SPI_FLASH_SELECT);
 XSpi_mSetSlaveSelectReg(XPAR_SPI_FLASH_BASEADDR, SPI_NONE_SELECT);
  // Transfer the op-code and retrieve the ID
  spi_transfer(send_data,recv_data,4);



Status = XTmrCtr_Initialize(&TimerCounterInst, 
XPAR_XPS_TIMER_1_DEVICE_ID);
  TmrInit(&InterruptController,&TimerCounterInst,
                              XPAR_XPS_TIMER_1_DEVICE_ID,
                              XPAR_XPS_INTC_0_XPS_TIMER_1_INTERRUPT_INTR,
                              0);
  while(1)
  {
     i++;
    i--;
  }
  return 0;
/************************** Timer event 
handler**************************/
void TimerCounterHandler(void *CallBackRef, Xuint8 TmrCtrNumber)
{

         XGpio_DiscreteWrite(&GpioOutput, 1, 0xFF);// ADC_Conv 
XGpio_DiscreteWrite(&GpioOutput, 1, 0x00);// ADC_Conv

}
Gast #1024620
Lesenswert?

Schau doch mal nach einer Referenzimplementierung für Dein Board, wo 
auch der ADC verwendet wird. Da schaust Du Dir mit Deinem Logicanalyzer 
ein funktionierendes Timing an. (Und stellst mal ein Bild davon rein.) 
Da spielst Du Dein Design auf und machst wieder ein Aufzeichnung mit dem 
Logicanalyzer (die auch hier reinstellen). Dann kann man mal 
vergleichen.

Duke
#1123339
Lesenswert?

Mein Tipp: Guck mal unter 
http://www.xilinx.com/products/boards/s3estarter/reference_designs.htm 
nach dem "PicoBlaze Processor Amplifier and A/D Converter Controller" 
Design. Funktionierte bei mir einwandfrei. Auch mein eigener Code konnte 
mit dem ADC sprechen, aber da ich den @ work geschrieben habe, kann ich 
den nicht einfach hier posten...

Grüsse aus Dresden, Torsten

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren