From 081f1409dc57a257868e3667a483c8c81b975ec6 Mon Sep 17 00:00:00 2001 From: Michael Wiebusch Date: Thu, 9 Jan 2014 12:43:52 +0100 Subject: [PATCH] can now read out complete adc0 without problems --- firmware/src/CB_functions.c | 19 ++++++++++++++++--- firmware/src/spi1.h | 2 ++ firmware/src/spi2.c | 2 +- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/firmware/src/CB_functions.c b/firmware/src/CB_functions.c index f51ed39..ab45120 100644 --- a/firmware/src/CB_functions.c +++ b/firmware/src/CB_functions.c @@ -17,6 +17,7 @@ extern uint16_t spi1DataBuffer[]; extern uint16_t SPI_DMA_Buffer_In[]; +extern uint16_t SPI_DMA_Buffer[]; uint16_t uC_regs[UC_NO_REGS]; uint16_t debug_counter = 0; @@ -69,6 +70,9 @@ void report_all_registers(void) { void adc0_read(void){ uint8_t c = 0; // counter for spi buffer fill + static uint8_t d = 0; + + c = 0; // the received data is always one transfer cycle // later than the corresponding commands requesting @@ -84,10 +88,12 @@ void adc0_read(void){ spi1_writeWord(CH4VSGND | UNIPOLAR); // VDDACUR SPI_DMA_Buffer_In[c++] = VDDDCUR; SPI_DMA_Buffer_In[c++] = spi1_receivedWord(); - spi1_writeWord(CH5VSCH7 | UNIPOLAR); // VDDD +// spi1_writeWord(CH5VSCH7 | UNIPOLAR); // VDDD + spi1_writeWord(CH5VSGND | UNIPOLAR); // VDDD vs AGND SPI_DMA_Buffer_In[c++] = VDDACUR; SPI_DMA_Buffer_In[c++] = spi1_receivedWord(); - spi1_writeWord(CH6VSCH7 | UNIPOLAR); // VDDA +// spi1_writeWord(CH6VSCH7 | UNIPOLAR); // VDDA + spi1_writeWord(CH6VSGND | UNIPOLAR); // VDDA vs AGND SPI_DMA_Buffer_In[c++] = VDDD; SPI_DMA_Buffer_In[c++] = spi1_receivedWord(); spi1_writeWord(CH7VSGND | UNIPOLAR); // GNDSENSE @@ -154,9 +160,16 @@ void adc0_read(void){ SPI_DMA_Buffer_In[c++] = VDISCREF2D; SPI_DMA_Buffer_In[c++] = spi1_receivedWord(); - spi1_writeWord(CH1VSGND | UNIPOLAR); // dummy command + spi1_writeWord(CH3VSGND | UNIPOLAR); // dummy command SPI_DMA_Buffer_In[c++] = VDISCREFD; SPI_DMA_Buffer_In[c++] = spi1_receivedWord(); + + +// SPI_DMA_Buffer[c++] = d; +// SPI_DMA_Buffer[c++] = d; +// + d = (d+1)%16; +// debug_out(c); spi_dma_transfer(c); diff --git a/firmware/src/spi1.h b/firmware/src/spi1.h index 738a6d4..03d4075 100644 --- a/firmware/src/spi1.h +++ b/firmware/src/spi1.h @@ -51,6 +51,8 @@ #define CH2VSGND 0b1001000000000000 #define CH3VSGND 0b1101000000000000 #define CH4VSGND 0b1010000000000000 +#define CH5VSGND 0b1110000000000000 +#define CH6VSGND 0b1011000000000000 #define CH7VSGND 0b1111000000000000 #define CH0VSCH7 0b1000100000000000 diff --git a/firmware/src/spi2.c b/firmware/src/spi2.c index 3862c2c..06f1a43 100644 --- a/firmware/src/spi2.c +++ b/firmware/src/spi2.c @@ -116,7 +116,7 @@ void spi_dma_transfer(uint8_t count) { while(spi_dma_busyFlag){}; - memcpy(SPI_DMA_Buffer, SPI_DMA_Buffer_In, count ); + memcpy(SPI_DMA_Buffer, SPI_DMA_Buffer_In, count*2 ); // DMA_Cmd(DMA1_Channel4, DISABLE); DMA_Cmd(DMA1_Channel5, DISABLE); -- 2.43.0