Using STM32 FMC HAL driver with parallel DAC

273 views Asked by At

Im trying to generate sinusoidal signal with STM32f767 and DAC8412. DAC have 12 bit data bus and 2 bit address to select one of the four analog outputs. I've configuried FMC in CubeIDE for a SRAM memory with 16 bit data and 2 bit addres. I was able to create buffer with 4096 integer values of sin(). Then i've tried to write them to addres 0x60000000, but it only writes 4 values. After that, program goes to HardFault_Handler().

#define SRAM_BANK_ADDR      ((uint32_t)0x60000000)
#define RESOLUTION_T        ((uint32_t)0x1000)
#define RESOLUTION_Y        ((uint32_t)0x1000)
uint32_t aTxBuffer[RESOLUTION_T];
uint32_t address = SRAM_BANK_ADDR;

Thats how i try to send data to DAC:

for (uint32_t i = 0; i<RESOLUTION_T; i++ )
  {
  *(__IO uint32_t*) address = aTxBuffer[i];
  }

Thats how i fill buffer:

static void Fill_Buffer(uint32_t *pBuffer, uint32_t res_T, uint32_t res_Y)
{
  uint32_t tmpIndex = 0;
  double sinVal;
  /* Put in global buffer different values */
  for (tmpIndex = 0; tmpIndex < res_T; tmpIndex++ )
  {
    sinVal = round((sin(M_TWOPI*tmpIndex/res_T)+1)*res_Y/2);
    pBuffer[tmpIndex] = sinVal;
  }
}
0

There are 0 answers