Ярлыки

_GetPixelIndex (1) _SetPixelIndex (1) 3-phase (1) 800x480 (1) АЦП (1) генератор (1) синхронный усилитель (2) структура (1) учебный курс (1) шаговый двигатель (1) ШИМ (2) accert (1) AD7608 (1) AD8429 (1) ADC (5) amplifer (1) arccos (1) arcsin (1) arctang (2) arctg (3) ARM (2) arm_sqrt_q15 (2) assembler (6) ASSERT (1) atan (2) bit (1) Bitband (1) boot (3) bootlloader (1) BUTTON (1) C (5) C# (1) CAN (2) CC2530 (5) CMSIS (4) command (1) Cordic (1) Core746I (1) CubeMX (4) DBGMCU (2) debug (2) debug.ini (1) delegate (1) Digital Potentiometers (1) DigitalPOT (1) Discovery (1) DMA (9) DMA2D (1) DSP (1) DSP library (1) DWT (1) EFM32 (5) EmWin (9) EXTI (1) FATFS (1) FMC (2) FreeRTOS (2) gl868-dual cmux (1) GPIO (4) GUI (2) GUIBuilder (1) GUIDRV_CompactColor_16 (1) HAL (3) HappyGecko (1) Hard Fault (2) heap (1) I2C (1) ID (1) ILI9320 (1) ILI9325 (1) Initialisation (1) InitLTDC (1) Instrumentithion (1) Interrupt (4) ITR (1) JTAG (1) Keil (5) LCDConf (2) lock-in (1) LTCD (1) LTDC (3) main (1) memory (1) MINI_STM32 Revision 01 (1) nBoot0 (1) NVIC (1) OnePulse (2) OSAL (4) pack (1) phase (1) printf (3) Pulse (1) PWM (12) RCC (2) RCR (1) Register (1) RESET (2) RS232 (3) RSS (1) RTC (3) RTOS-RTX (1) RTT (1) RTX-RTOS (1) SDCard (1) SDRAM (6) Segger (2) SPI (3) sqrt (3) SSD1298 (1) SSD1963 (1) Standart Peripherial Library (3) STANDBAY (1) startup (1) STemWin (8) stepper motor (1) STlink (2) STM32 (17) STM32429ZI (1) STM32Cube (1) STM32DBG.IN (1) STM32F (28) STM32F0 (4) STM32F1 (13) STM32F4 (10) STM32F4 Discovery (1) STM32F407ZG (1) STM32F429 (2) STM32F746 (1) STOP (1) string (1) struct (1) SWD (1) SWD JTAG (1) Synhronization (1) system_stm32f4xx.c (1) SystemInit (1) SysTick (1) task (4) telit (1) TIM (27) typedef (1) UART (1) USART (9) viewer (2) WM_PAINT (1) Z-stack (5) ZigBee (5)

воскресенье, 6 августа 2017 г.

STM32F746 Memory Region

MPU_Region_InitTypeDef MPU_InitStruct_SDRAM;
 MPU_Region_InitTypeDef MPU_InitStruct_FPGAKBD;

В 746-м, сразу после настройки FMC, возможен только доступ по четным (выровненным на 4 байта адресам). Для доступа к нечетным адресам надо еще настраивать MPU на эти области адресов. Иначе проц выпадает в Hard Fault exception handler.

 /* Disable the MPU */
 HAL_MPU_Disable();

 /* Configure the MPU attributes as WT for SDRAM */
 MPU_InitStruct_SDRAM.Number = MPU_REGION_NUMBER0;
 MPU_InitStruct_SDRAM.BaseAddress = 0xD0000000;
 MPU_InitStruct_SDRAM.Size = MPU_REGION_SIZE_8MB;

 MPU_InitStruct_SDRAM.Enable = MPU_REGION_ENABLE;
 MPU_InitStruct_SDRAM.AccessPermission = MPU_REGION_FULL_ACCESS;
 MPU_InitStruct_SDRAM.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
 MPU_InitStruct_SDRAM.IsCacheable = MPU_ACCESS_CACHEABLE;
 MPU_InitStruct_SDRAM.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
 MPU_InitStruct_SDRAM.TypeExtField = MPU_TEX_LEVEL0;
 MPU_InitStruct_SDRAM.SubRegionDisable = 0x00;
 MPU_InitStruct_SDRAM.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;

 HAL_MPU_ConfigRegion(&MPU_InitStruct_SDRAM);

 MPU_InitStruct_FPGAKBD.Number = MPU_REGION_NUMBER1;
 MPU_InitStruct_FPGAKBD.BaseAddress = 0x60000000;
 MPU_InitStruct_FPGAKBD.Size = MPU_REGION_SIZE_512MB;

 MPU_InitStruct_FPGAKBD.Enable = MPU_REGION_ENABLE;
 MPU_InitStruct_FPGAKBD.AccessPermission = MPU_REGION_FULL_ACCESS;
 MPU_InitStruct_FPGAKBD.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
 MPU_InitStruct_FPGAKBD.IsCacheable = MPU_ACCESS_CACHEABLE;
 MPU_InitStruct_FPGAKBD.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
 MPU_InitStruct_FPGAKBD.TypeExtField = MPU_TEX_LEVEL0;
 MPU_InitStruct_FPGAKBD.SubRegionDisable = 0x00;
 MPU_InitStruct_FPGAKBD.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;

 HAL_MPU_ConfigRegion(&MPU_InitStruct_FPGAKBD);
 /* Enable the MPU */
 HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT);

Комментариев нет:

Отправить комментарий