1

enter image description here

spi bus(?) datasheet : https://www.ti.com/lit/ds/symlink/ads8684.pdf?ts=1667284885553&ref_url=https%253A%252F%252Fwww.google.co.kr%252F


I want to measure several sensors using spi, how can I get the value?

I thought it was a code that worked, but when I tried to use it, I couldn't get the price I think it means that the data sheet and the code are compared to the data sheet, but I don't know how to touch it because the data sheet doesn't show the parts that I knew as address values

Even if I look at the datasheet, I don't know how to fill it out in source code

Usually, the spi source code is stm32 board and there is only one spi and 1:1 source code, so I can't see the 1:N code

I don't understand how to access the spi, so please help me

The spi source code I received is as follows

void Uart7_Task(void const * argument)
{
  /* USER CODE BEGIN Uart7_Task */
   
   uint8_t T_buffer_C1[] = {0x03,0x01,0x00}; // 80: 7
   uint8_t T_buffer_C2[] = {0x05,0xFE,0x00}; //7F: 7  
   uint8_t T_buffer_C3[] = {0x0B,0x06,0x00}; //0B : 0,0D : 1  19: 7
   uint8_t T_buffer_C33[] = {0xA0,0x00,0x00,0x00};
   uint8_t T_buffer_C4_3[] = {0x00,0x00,0x00,0x00};
   uint8_t T_buffer_C5[] = {0xFF,0xFF,0x00,0x00};

   uint8_t T_buffer_C1_[] = {0x85,0x00}; // 80: 7
   uint8_t T_buffer_C2_0[] = {0x0B,0x00}; //7F: 7  
   uint8_t T_buffer_C2_1[] = {0x0D,0x05}; //7F: 7  
   uint8_t T_buffer_C2_2[] = {0x0F,0x05}; //7F: 7  
   uint8_t T_buffer_C2_3[] = {0x11,0x05}; //7F: 7  
   uint8_t T_buffer_C2_4[] = {0x13,0x05}; //7F: 7  
   uint8_t T_buffer_C2_51[] = {0x15,0x05}; //7F: 7  
   uint8_t T_buffer_C2_6[] = {0x17,0x05}; //7F: 7  
   uint8_t T_buffer_C2_7[] = {0x19,0x0F}; //7F: 7  
   uint8_t T_buffer_C33_[] = {0xA0,0x00,0xFF,0xFF};
   uint8_t T_buffer_C4_[] = {0xFF,0xFF,0xFF,0xFF};
   uint8_t T_buffer_C5_[] = {0x00,0x00,0x00,0x00};   
   
   
  /* Infinite loop */
   HAL_SPI_Transmit(&hspi2, T_buffer_C1_, 2, 5);
HAL_SPI_Receive(&hspi2,R_buffer_Spi2, 2, 5);     
   HAL_SPI_Transmit(&hspi2, T_buffer_C2_0, 2, 5);   
HAL_SPI_Receive(&hspi2,R_buffer_Spi2, 2, 5);
   HAL_SPI_Transmit(&hspi2, T_buffer_C2_7, 2, 5);
HAL_SPI_Receive(&hspi2,R_buffer_Spi2, 2, 5);    
   HAL_SPI_Transmit(&hspi2, T_buffer_C5_5, 2, 5);
HAL_SPI_Receive(&hspi2,R_buffer_Spi2, 2, 5);     
   HAL_SPI_Transmit(&hspi2, T_buffer_C5_5+2, 2, 5);
HAL_SPI_Receive(&hspi2,R_buffer_Spi2, 2, 5);  


  
  for(;;)
  { 
    osDelay(1);
    if(timer_state==1)
    {            
      for(int i=0; i<8; i++)
      {
        T_buffer_C5_5[0] = 0xC0 + (4 * i);
      
        HAL_Delay(1);
        HAL_SPI_Transmit(&hspi2, T_buffer_C5_, 2, 5);
        HAL_SPI_Receive(&hspi2,R_buffer_Spi2, 2, 5);
        HAL_SPI_Transmit(&hspi2, T_buffer_C4_, 2, 5);
        HAL_SPI_Receive(&hspi2,R_buffer_Spi2, 2, 5);
        
        spi2_Ch0 = R_buffer_Spi2[3];
        spi2_Ch0 = spi2_Ch0 << 8;
        spi2_Ch0 += R_buffer_Spi2[2];

        R_buffer_Spi2_Temp[0] = R_buffer_Spi2[3];
        R_buffer_Spi2_Temp[1] = R_buffer_Spi2[2];
        R_buffer_Spi2_Temp[2] = 0x0D;
        R_buffer_Spi2_Temp[3] = 0x0A; 
        
        HAL_Delay(5);
        
        if(i==0)
        {
          spi2_Ch0 = 0;
          spi2_Ch0 = R_buffer_Spi2_Temp[1];
          spi2_Ch0 = spi2_Ch0 << 8;
          spi2_Ch0 += R_buffer_Spi2_Temp[0];      
        }
        else if(i==7)
        {
          spi2_Ch7 = 0;
          spi2_Ch7 = R_buffer_Spi2_Temp[1];
          spi2_Ch7 = spi2_Ch7 << 8;
          spi2_Ch7 += R_buffer_Spi2_Temp[0];        
        }
      }

      
      HAL_SPI_Transmit(&hspi3, T_buffer_C4_3, 3, 5);
      HAL_SPI_Receive(&hspi3,R_buffer_Spi3, 3, 5); 
      
      T_buffer_C5_5[0]=0xC0;

      memset(R_buffer_Spi5,0x00,sizeof(R_buffer_Spi5));
      memset(R_buffer_Spi2_Temp,0x00,sizeof(R_buffer_Spi2_Temp));
      
      timer_state= 0;
    }
  }
  /* USER CODE END Uart7_Task */
}

There are two things I want to know

  1. How to use spi rst
  2. To retrieve sensor measurements

If you tell me one way to measure the sensor, I think I can apply it to other things similarly

I wrote this while using a translator, so please understand even if the composition is wrong

  • 1
    https://deepbluembedded.com/stm32-spi-tutorial/ – hcheung Nov 11 '22 at 07:09
  • So how do I use this command to get the sensor readings from that ads? Do I just put REGISTER ADDRESS on the program register map in HAL_SPI_Receive? Don't you need to do anything else? I'm asking because it didn't work well –  Nov 11 '22 at 07:35
  • What are all these arrays with very similar names? How are T_buffer1[], T_buffer_C1[] and T_buffer_C1_[] related? It's almost deliberately confusing. I'd suggest throwing away that code and starting again. A logic analyser would probably be useful. – pmacfarlane Nov 12 '22 at 09:05
  • It's okay to create a new source code, but I don't know how to read the measurements I don't have a similar example. Is there a way to know? –  Nov 14 '22 at 00:15

0 Answers0