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.
Sorry unter: http://www.xilinx.com/support/documentation/boards_and_kits/ug230.pdf Kapitel 10 Seite 75.
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?
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.
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: 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
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 }
Dann laß doch mal jemand anderes auf die Schaltung gucken. Oder mach mal einen Screenshoot vom Timing mit Deinem Logic Analyzer und stell ihn hier rein. Duke
und Duke hast du einen Vorschlag!!! ist das nicht richtig, was ich gemacht habe (die Adresse von einem LED geändert und stattdessen die Adresse vom ADC "im .ucf-File" eingegeben)???
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
Hallo ! hast du CS auf low gesetzt ? wenn ja , danach muss du warten bevor du irgenwas in mit SDI startet versuch mal 20 us zu warten wenn das klappt reduziert diese und probiert einfach nochmal usw.......
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.