Hi everyone,
Problem solved!!!! :smileyhappy:
I'm now able to work with USB stacks V4.1.1 and KSDK USB host examples on a MK22FX512VLK12.
You just need to disable MPU!!!!
1) If you are using KSDK, add MPU definitions to MK22F512 header file. If you are using USB V4.1.1 you can skip this point.
2) Disable MPU - (MPU_CESR = 0)
MPU definitions
/* ----------------------------------------------------------------------------
-- MPU
---------------------------------------------------------------------------- */
/*!
* @addtogroup MPU_Peripheral MPU
* @{
*/
/** MPU - Peripheral register structure */
typedef struct MPU_MemMap {
uint32_t CESR; /**< Control/Error Status Register, offset: 0x0 */
uint8_t RESERVED_0[12];
struct { /* offset: 0x10, array step: 0x8 */
uint32_t EAR; /**< Error Address Register, slave port n, array offset: 0x10, array step: 0x8 */
uint32_t EDR; /**< Error Detail Register, slave port n, array offset: 0x14, array step: 0x8 */
} SP[5];
uint8_t RESERVED_1[968];
uint32_t WORD[12][4]; /**< Region Descriptor n, Word 0..Region Descriptor n, Word 3, array offset: 0x400, array step: index*0x10, index2*0x4 */
uint8_t RESERVED_2[832];
uint32_t RGDAAC[12]; /**< Region Descriptor Alternate Access Control n, array offset: 0x800, array step: 0x4 */
} volatile *MPU_MemMapPtr;
/* ----------------------------------------------------------------------------
-- MPU - Register accessor macros
---------------------------------------------------------------------------- */
/*!
* @addtogroup MPU_Register_Accessor_Macros MPU - Register accessor macros
* @{
*/
/* MPU - Register accessors */
#define MPU_CESR_REG(base) ((base)->CESR)
#define MPU_EAR_REG(base,index) ((base)->SP[index].EAR)
#define MPU_EDR_REG(base,index) ((base)->SP[index].EDR)
#define MPU_WORD_REG(base,index,index2) ((base)->WORD[index][index2])
#define MPU_RGDAAC_REG(base,index) ((base)->RGDAAC[index])
/*!
* @}
*/ /* end of group MPU_Register_Accessor_Macros */
/* ----------------------------------------------------------------------------
-- MPU Register Masks
---------------------------------------------------------------------------- */
/*!
* @addtogroup MPU_Register_Masks MPU Register Masks
* @{
*/
/* CESR Bit Fields */
#define MPU_CESR_VLD_MASK 0x1u
#define MPU_CESR_VLD_SHIFT 0
#define MPU_CESR_NRGD_MASK 0xF00u
#define MPU_CESR_NRGD_SHIFT 8
#define MPU_CESR_NRGD(x) (((uint32_t)(((uint32_t)(x))<<MPU_CESR_NRGD_SHIFT))&MPU_CESR_NRGD_MASK)
#define MPU_CESR_NSP_MASK 0xF000u
#define MPU_CESR_NSP_SHIFT 12
#define MPU_CESR_NSP(x) (((uint32_t)(((uint32_t)(x))<<MPU_CESR_NSP_SHIFT))&MPU_CESR_NSP_MASK)
#define MPU_CESR_HRL_MASK 0xF0000u
#define MPU_CESR_HRL_SHIFT 16
#define MPU_CESR_HRL(x) (((uint32_t)(((uint32_t)(x))<<MPU_CESR_HRL_SHIFT))&MPU_CESR_HRL_MASK)
#define MPU_CESR_SPERR_MASK 0xF8000000u
#define MPU_CESR_SPERR_SHIFT 27
#define MPU_CESR_SPERR(x) (((uint32_t)(((uint32_t)(x))<<MPU_CESR_SPERR_SHIFT))&MPU_CESR_SPERR_MASK)
/* EAR Bit Fields */
#define MPU_EAR_EADDR_MASK 0xFFFFFFFFu
#define MPU_EAR_EADDR_SHIFT 0
#define MPU_EAR_EADDR(x) (((uint32_t)(((uint32_t)(x))<<MPU_EAR_EADDR_SHIFT))&MPU_EAR_EADDR_MASK)
/* EDR Bit Fields */
#define MPU_EDR_ERW_MASK 0x1u
#define MPU_EDR_ERW_SHIFT 0
#define MPU_EDR_EATTR_MASK 0xEu
#define MPU_EDR_EATTR_SHIFT 1
#define MPU_EDR_EATTR(x) (((uint32_t)(((uint32_t)(x))<<MPU_EDR_EATTR_SHIFT))&MPU_EDR_EATTR_MASK)
#define MPU_EDR_EMN_MASK 0xF0u
#define MPU_EDR_EMN_SHIFT 4
#define MPU_EDR_EMN(x) (((uint32_t)(((uint32_t)(x))<<MPU_EDR_EMN_SHIFT))&MPU_EDR_EMN_MASK)
#define MPU_EDR_EPID_MASK 0xFF00u
#define MPU_EDR_EPID_SHIFT 8
#define MPU_EDR_EPID(x) (((uint32_t)(((uint32_t)(x))<<MPU_EDR_EPID_SHIFT))&MPU_EDR_EPID_MASK)
#define MPU_EDR_EACD_MASK 0xFFFF0000u
#define MPU_EDR_EACD_SHIFT 16
#define MPU_EDR_EACD(x) (((uint32_t)(((uint32_t)(x))<<MPU_EDR_EACD_SHIFT))&MPU_EDR_EACD_MASK)
/* WORD Bit Fields */
#define MPU_WORD_VLD_MASK 0x1u
#define MPU_WORD_VLD_SHIFT 0
#define MPU_WORD_M0UM_MASK 0x7u
#define MPU_WORD_M0UM_SHIFT 0
#define MPU_WORD_M0UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M0UM_SHIFT))&MPU_WORD_M0UM_MASK)
#define MPU_WORD_M0SM_MASK 0x18u
#define MPU_WORD_M0SM_SHIFT 3
#define MPU_WORD_M0SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M0SM_SHIFT))&MPU_WORD_M0SM_MASK)
#define MPU_WORD_M0PE_MASK 0x20u
#define MPU_WORD_M0PE_SHIFT 5
#define MPU_WORD_ENDADDR_MASK 0xFFFFFFE0u
#define MPU_WORD_ENDADDR_SHIFT 5
#define MPU_WORD_ENDADDR(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_ENDADDR_SHIFT))&MPU_WORD_ENDADDR_MASK)
#define MPU_WORD_SRTADDR_MASK 0xFFFFFFE0u
#define MPU_WORD_SRTADDR_SHIFT 5
#define MPU_WORD_SRTADDR(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_SRTADDR_SHIFT))&MPU_WORD_SRTADDR_MASK)
#define MPU_WORD_M1UM_MASK 0x1C0u
#define MPU_WORD_M1UM_SHIFT 6
#define MPU_WORD_M1UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M1UM_SHIFT))&MPU_WORD_M1UM_MASK)
#define MPU_WORD_M1SM_MASK 0x600u
#define MPU_WORD_M1SM_SHIFT 9
#define MPU_WORD_M1SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M1SM_SHIFT))&MPU_WORD_M1SM_MASK)
#define MPU_WORD_M1PE_MASK 0x800u
#define MPU_WORD_M1PE_SHIFT 11
#define MPU_WORD_M2UM_MASK 0x7000u
#define MPU_WORD_M2UM_SHIFT 12
#define MPU_WORD_M2UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M2UM_SHIFT))&MPU_WORD_M2UM_MASK)
#define MPU_WORD_M2SM_MASK 0x18000u
#define MPU_WORD_M2SM_SHIFT 15
#define MPU_WORD_M2SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M2SM_SHIFT))&MPU_WORD_M2SM_MASK)
#define MPU_WORD_PIDMASK_MASK 0xFF0000u
#define MPU_WORD_PIDMASK_SHIFT 16
#define MPU_WORD_PIDMASK(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_PIDMASK_SHIFT))&MPU_WORD_PIDMASK_MASK)
#define MPU_WORD_M2PE_MASK 0x20000u
#define MPU_WORD_M2PE_SHIFT 17
#define MPU_WORD_M3UM_MASK 0x1C0000u
#define MPU_WORD_M3UM_SHIFT 18
#define MPU_WORD_M3UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M3UM_SHIFT))&MPU_WORD_M3UM_MASK)
#define MPU_WORD_M3SM_MASK 0x600000u
#define MPU_WORD_M3SM_SHIFT 21
#define MPU_WORD_M3SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_M3SM_SHIFT))&MPU_WORD_M3SM_MASK)
#define MPU_WORD_M3PE_MASK 0x800000u
#define MPU_WORD_M3PE_SHIFT 23
#define MPU_WORD_PID_MASK 0xFF000000u
#define MPU_WORD_PID_SHIFT 24
#define MPU_WORD_PID(x) (((uint32_t)(((uint32_t)(x))<<MPU_WORD_PID_SHIFT))&MPU_WORD_PID_MASK)
#define MPU_WORD_M4WE_MASK 0x1000000u
#define MPU_WORD_M4WE_SHIFT 24
#define MPU_WORD_M4RE_MASK 0x2000000u
#define MPU_WORD_M4RE_SHIFT 25
#define MPU_WORD_M5WE_MASK 0x4000000u
#define MPU_WORD_M5WE_SHIFT 26
#define MPU_WORD_M5RE_MASK 0x8000000u
#define MPU_WORD_M5RE_SHIFT 27
#define MPU_WORD_M6WE_MASK 0x10000000u
#define MPU_WORD_M6WE_SHIFT 28
#define MPU_WORD_M6RE_MASK 0x20000000u
#define MPU_WORD_M6RE_SHIFT 29
#define MPU_WORD_M7WE_MASK 0x40000000u
#define MPU_WORD_M7WE_SHIFT 30
#define MPU_WORD_M7RE_MASK 0x80000000u
#define MPU_WORD_M7RE_SHIFT 31
/* RGDAAC Bit Fields */
#define MPU_RGDAAC_M0UM_MASK 0x7u
#define MPU_RGDAAC_M0UM_SHIFT 0
#define MPU_RGDAAC_M0UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M0UM_SHIFT))&MPU_RGDAAC_M0UM_MASK)
#define MPU_RGDAAC_M0SM_MASK 0x18u
#define MPU_RGDAAC_M0SM_SHIFT 3
#define MPU_RGDAAC_M0SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M0SM_SHIFT))&MPU_RGDAAC_M0SM_MASK)
#define MPU_RGDAAC_M0PE_MASK 0x20u
#define MPU_RGDAAC_M0PE_SHIFT 5
#define MPU_RGDAAC_M1UM_MASK 0x1C0u
#define MPU_RGDAAC_M1UM_SHIFT 6
#define MPU_RGDAAC_M1UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M1UM_SHIFT))&MPU_RGDAAC_M1UM_MASK)
#define MPU_RGDAAC_M1SM_MASK 0x600u
#define MPU_RGDAAC_M1SM_SHIFT 9
#define MPU_RGDAAC_M1SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M1SM_SHIFT))&MPU_RGDAAC_M1SM_MASK)
#define MPU_RGDAAC_M1PE_MASK 0x800u
#define MPU_RGDAAC_M1PE_SHIFT 11
#define MPU_RGDAAC_M2UM_MASK 0x7000u
#define MPU_RGDAAC_M2UM_SHIFT 12
#define MPU_RGDAAC_M2UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M2UM_SHIFT))&MPU_RGDAAC_M2UM_MASK)
#define MPU_RGDAAC_M2SM_MASK 0x18000u
#define MPU_RGDAAC_M2SM_SHIFT 15
#define MPU_RGDAAC_M2SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M2SM_SHIFT))&MPU_RGDAAC_M2SM_MASK)
#define MPU_RGDAAC_M2PE_MASK 0x20000u
#define MPU_RGDAAC_M2PE_SHIFT 17
#define MPU_RGDAAC_M3UM_MASK 0x1C0000u
#define MPU_RGDAAC_M3UM_SHIFT 18
#define MPU_RGDAAC_M3UM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M3UM_SHIFT))&MPU_RGDAAC_M3UM_MASK)
#define MPU_RGDAAC_M3SM_MASK 0x600000u
#define MPU_RGDAAC_M3SM_SHIFT 21
#define MPU_RGDAAC_M3SM(x) (((uint32_t)(((uint32_t)(x))<<MPU_RGDAAC_M3SM_SHIFT))&MPU_RGDAAC_M3SM_MASK)
#define MPU_RGDAAC_M3PE_MASK 0x800000u
#define MPU_RGDAAC_M3PE_SHIFT 23
#define MPU_RGDAAC_M4WE_MASK 0x1000000u
#define MPU_RGDAAC_M4WE_SHIFT 24
#define MPU_RGDAAC_M4RE_MASK 0x2000000u
#define MPU_RGDAAC_M4RE_SHIFT 25
#define MPU_RGDAAC_M5WE_MASK 0x4000000u
#define MPU_RGDAAC_M5WE_SHIFT 26
#define MPU_RGDAAC_M5RE_MASK 0x8000000u
#define MPU_RGDAAC_M5RE_SHIFT 27
#define MPU_RGDAAC_M6WE_MASK 0x10000000u
#define MPU_RGDAAC_M6WE_SHIFT 28
#define MPU_RGDAAC_M6RE_MASK 0x20000000u
#define MPU_RGDAAC_M6RE_SHIFT 29
#define MPU_RGDAAC_M7WE_MASK 0x40000000u
#define MPU_RGDAAC_M7WE_SHIFT 30
#define MPU_RGDAAC_M7RE_MASK 0x80000000u
#define MPU_RGDAAC_M7RE_SHIFT 31
/*!
* @}
*/ /* end of group MPU_Register_Masks */
/* MPU - Peripheral instance base addresses */
/** Peripheral MPU base pointer */
#define MPU_BASE_PTR ((MPU_MemMapPtr)0x4000D000u)
/** Array initializer of MPU peripheral base pointers */
#define MPU_BASE_PTRS { MPU_BASE_PTR }
/* ----------------------------------------------------------------------------
-- MPU - Register accessor macros
---------------------------------------------------------------------------- */
/*!
* @addtogroup MPU_Register_Accessor_Macros MPU - Register accessor macros
* @{
*/
/* MPU - Register instance definitions */
/* MPU */
#define MPU_CESR MPU_CESR_REG(MPU_BASE_PTR)
#define MPU_EAR0 MPU_EAR_REG(MPU_BASE_PTR,0)
#define MPU_EDR0 MPU_EDR_REG(MPU_BASE_PTR,0)
#define MPU_EAR1 MPU_EAR_REG(MPU_BASE_PTR,1)
#define MPU_EDR1 MPU_EDR_REG(MPU_BASE_PTR,1)
#define MPU_EAR2 MPU_EAR_REG(MPU_BASE_PTR,2)
#define MPU_EDR2 MPU_EDR_REG(MPU_BASE_PTR,2)
#define MPU_EAR3 MPU_EAR_REG(MPU_BASE_PTR,3)
#define MPU_EDR3 MPU_EDR_REG(MPU_BASE_PTR,3)
#define MPU_EAR4 MPU_EAR_REG(MPU_BASE_PTR,4)
#define MPU_EDR4 MPU_EDR_REG(MPU_BASE_PTR,4)
#define MPU_RGD0_WORD0 MPU_WORD_REG(MPU_BASE_PTR,0,0)
#define MPU_RGD0_WORD1 MPU_WORD_REG(MPU_BASE_PTR,0,1)
#define MPU_RGD0_WORD2 MPU_WORD_REG(MPU_BASE_PTR,0,2)
#define MPU_RGD0_WORD3 MPU_WORD_REG(MPU_BASE_PTR,0,3)
#define MPU_RGD1_WORD0 MPU_WORD_REG(MPU_BASE_PTR,1,0)
#define MPU_RGD1_WORD1 MPU_WORD_REG(MPU_BASE_PTR,1,1)
#define MPU_RGD1_WORD2 MPU_WORD_REG(MPU_BASE_PTR,1,2)
#define MPU_RGD1_WORD3 MPU_WORD_REG(MPU_BASE_PTR,1,3)
#define MPU_RGD2_WORD0 MPU_WORD_REG(MPU_BASE_PTR,2,0)
#define MPU_RGD2_WORD1 MPU_WORD_REG(MPU_BASE_PTR,2,1)
#define MPU_RGD2_WORD2 MPU_WORD_REG(MPU_BASE_PTR,2,2)
#define MPU_RGD2_WORD3 MPU_WORD_REG(MPU_BASE_PTR,2,3)
#define MPU_RGD3_WORD0 MPU_WORD_REG(MPU_BASE_PTR,3,0)
#define MPU_RGD3_WORD1 MPU_WORD_REG(MPU_BASE_PTR,3,1)
#define MPU_RGD3_WORD2 MPU_WORD_REG(MPU_BASE_PTR,3,2)
#define MPU_RGD3_WORD3 MPU_WORD_REG(MPU_BASE_PTR,3,3)
#define MPU_RGD4_WORD0 MPU_WORD_REG(MPU_BASE_PTR,4,0)
#define MPU_RGD4_WORD1 MPU_WORD_REG(MPU_BASE_PTR,4,1)
#define MPU_RGD4_WORD2 MPU_WORD_REG(MPU_BASE_PTR,4,2)
#define MPU_RGD4_WORD3 MPU_WORD_REG(MPU_BASE_PTR,4,3)
#define MPU_RGD5_WORD0 MPU_WORD_REG(MPU_BASE_PTR,5,0)
#define MPU_RGD5_WORD1 MPU_WORD_REG(MPU_BASE_PTR,5,1)
#define MPU_RGD5_WORD2 MPU_WORD_REG(MPU_BASE_PTR,5,2)
#define MPU_RGD5_WORD3 MPU_WORD_REG(MPU_BASE_PTR,5,3)
#define MPU_RGD6_WORD0 MPU_WORD_REG(MPU_BASE_PTR,6,0)
#define MPU_RGD6_WORD1 MPU_WORD_REG(MPU_BASE_PTR,6,1)
#define MPU_RGD6_WORD2 MPU_WORD_REG(MPU_BASE_PTR,6,2)
#define MPU_RGD6_WORD3 MPU_WORD_REG(MPU_BASE_PTR,6,3)
#define MPU_RGD7_WORD0 MPU_WORD_REG(MPU_BASE_PTR,7,0)
#define MPU_RGD7_WORD1 MPU_WORD_REG(MPU_BASE_PTR,7,1)
#define MPU_RGD7_WORD2 MPU_WORD_REG(MPU_BASE_PTR,7,2)
#define MPU_RGD7_WORD3 MPU_WORD_REG(MPU_BASE_PTR,7,3)
#define MPU_RGD8_WORD0 MPU_WORD_REG(MPU_BASE_PTR,8,0)
#define MPU_RGD8_WORD1 MPU_WORD_REG(MPU_BASE_PTR,8,1)
#define MPU_RGD8_WORD2 MPU_WORD_REG(MPU_BASE_PTR,8,2)
#define MPU_RGD8_WORD3 MPU_WORD_REG(MPU_BASE_PTR,8,3)
#define MPU_RGD9_WORD0 MPU_WORD_REG(MPU_BASE_PTR,9,0)
#define MPU_RGD9_WORD1 MPU_WORD_REG(MPU_BASE_PTR,9,1)
#define MPU_RGD9_WORD2 MPU_WORD_REG(MPU_BASE_PTR,9,2)
#define MPU_RGD9_WORD3 MPU_WORD_REG(MPU_BASE_PTR,9,3)
#define MPU_RGD10_WORD0 MPU_WORD_REG(MPU_BASE_PTR,10,0)
#define MPU_RGD10_WORD1 MPU_WORD_REG(MPU_BASE_PTR,10,1)
#define MPU_RGD10_WORD2 MPU_WORD_REG(MPU_BASE_PTR,10,2)
#define MPU_RGD10_WORD3 MPU_WORD_REG(MPU_BASE_PTR,10,3)
#define MPU_RGD11_WORD0 MPU_WORD_REG(MPU_BASE_PTR,11,0)
#define MPU_RGD11_WORD1 MPU_WORD_REG(MPU_BASE_PTR,11,1)
#define MPU_RGD11_WORD2 MPU_WORD_REG(MPU_BASE_PTR,11,2)
#define MPU_RGD11_WORD3 MPU_WORD_REG(MPU_BASE_PTR,11,3)
#define MPU_RGDAAC0 MPU_RGDAAC_REG(MPU_BASE_PTR,0)
#define MPU_RGDAAC1 MPU_RGDAAC_REG(MPU_BASE_PTR,1)
#define MPU_RGDAAC2 MPU_RGDAAC_REG(MPU_BASE_PTR,2)
#define MPU_RGDAAC3 MPU_RGDAAC_REG(MPU_BASE_PTR,3)
#define MPU_RGDAAC4 MPU_RGDAAC_REG(MPU_BASE_PTR,4)
#define MPU_RGDAAC5 MPU_RGDAAC_REG(MPU_BASE_PTR,5)
#define MPU_RGDAAC6 MPU_RGDAAC_REG(MPU_BASE_PTR,6)
#define MPU_RGDAAC7 MPU_RGDAAC_REG(MPU_BASE_PTR,7)
#define MPU_RGDAAC8 MPU_RGDAAC_REG(MPU_BASE_PTR,8)
#define MPU_RGDAAC9 MPU_RGDAAC_REG(MPU_BASE_PTR,9)
#define MPU_RGDAAC10 MPU_RGDAAC_REG(MPU_BASE_PTR,10)
#define MPU_RGDAAC11 MPU_RGDAAC_REG(MPU_BASE_PTR,11)
/* MPU - Register array accessors */
#define MPU_EAR(index) MPU_EAR_REG(MPU_BASE_PTR,index)
#define MPU_EDR(index) MPU_EDR_REG(MPU_BASE_PTR,index)
#define MPU_WORD(index,index2) MPU_WORD_REG(MPU_BASE_PTR,index,index2)
#define MPU_RGDAAC(index) MPU_RGDAAC_REG(MPU_BASE_PTR,index)
/*!
* @}
*/ /* end of group MPU_Register_Accessor_Macros */
/*!
* @}
*/ /* end of group MPU_Peripheral */
Best regards,
José Ribeiro