1. В файле MDR1901VC1T.h есть следующая информация про регистры управления подсистемой DSP:
Код:
/* MDR_DSP_CORE_TypeDef structure */
typedef struct {
__I uint32_t RESERVED0[47];
__IO uint32_t CLKCMD; /*!< */
__IO uint32_t DIR; /*!< */
__IO uint32_t AIR; /*!< */
}
MDR_DSP_CORE_TypeDef;
#define MDR_DSP_CORE_BASE (0x30000000)
#define MDR_DSP_CORE ((MDR_DSP_CORE_TypeDef *) MDR_DSP_CORE_BASE)
Откуда следует, что регистр DIR находится сразу после CLKCMD, т.е. по адресу 0x300000С0. А AIR, соответственно, - по адресу 0x300000С4. В спецификации (файл spec_1901BC1T.pdf) в "Таблица 15–3 – Регистры управления подсистемой DSP" указано, что DIR находится по адресу 0x3000_0078, а AIR - 0x3000_007A.
Где информация верна?
2. В файле MDR1901VC1T.h указана следующая структура блока MCBSP
Код:
/* MDR_MCBSPx_TypeDef structure */
typedef struct {
__IO uint32_t DRR; /*!< */
__IO uint32_t DXR; /*!< */
__IO uint32_t SPSA; /*!< */
__IO uint32_t SPCR; /*!< */
__IO uint32_t RCR; /*!< */
__IO uint32_t XCR; /*!< */
__IO uint32_t SRGR; /*!< */
__IO uint32_t MCR; /*!< */
__IO uint32_t XCER; /*!< */
__IO uint32_t RCER; /*!< */
__IO uint32_t PCR_SPSR; /*!< */
}MDR_MCBSP_TypeDef;
Т.е., регистры, следующие за SPSA (SPCR, RCR и т.д.), расположены в памяти один за другим. В спецификации указано, что эти регистры расположены по одному адресу, т.е. их надо в union загонять.