Есть адрес реестра (первый?) SPI1.
Существует структура с смещениями. Я полагаю, это означает, что
SPI1_REG_BASE + offset = адрес какого-либо реестра SPI
#define SPI1_REG_BASE (0x01F0E000)
//-----------------------------------------------------
//Register Structure & Defines
//-----------------------------------------------------
typedef struct
{
volatile uint32_t SPIGCR0; //0x0000
volatile uint32_t SPIGCR1; //0x0004
volatile uint32_t SPIINT; //0x0008
volatile uint32_t SPILVL; //0x000C
volatile uint32_t SPIFLG; //0x0010
volatile uint32_t SPIPC0; //0x0014
volatile uint32_t SPIPC1; //0x0018
volatile uint32_t SPIPC2; //0x001C
volatile uint32_t SPIPC3; //0x0020
volatile uint32_t SPIPC4; //0x0024
volatile uint32_t SPIPC5; //0x0028
volatile uint32_t RSVD0[3]; //0x002C
volatile uint32_t SPIDAT0; //0x0038
volatile uint32_t SPIDAT1; //0x003C
volatile uint32_t SPIBUF; //0x0040
volatile uint32_t SPIEMU; //0x0044
volatile uint32_t SPIDELAY; //0x0048
volatile uint32_t SPIDEF; //0x004C
volatile uint32_t SPIFMT0; //0x0050
volatile uint32_t SPIFMT1; //0x0054
volatile uint32_t SPIFMT2; //0x0058
volatile uint32_t SPIFMT3; //0x005C
volatile uint32_t INTVEC0; //0x0060
volatile uint32_t INTVEC1; //0x0064
} spi_regs_t;
Существуют некоторые определения и определение указателя * spi
#define CSDEF0 (0x00000001) //bit 0
#define CSHOLD (0x10000000) //bit 28
spi_regs_t *spi = (spi_regs_t *)SPI1_REG_BASE;
Я неправильно понял бит. Например,
spi->SPIDEF |= CSDEF0 //set 0 bit in the registry field
Я понимаю, что SPIDEF - это регистр SPI, который имеет адрес смещения 4Ch
(0x01F0E000 + 0x4C). Но почему CSDEF0 бит 0 ?? В реестре SPIDEF есть поле CSDEF (0-7 бит). Это означает, что 7 бит CSDEF имеет адрес 0x00000008? и 5 бит имеет адрес 0x00000006?
Но тогда почему в поле CSHOLD реестра SPIDAT1 есть адрес 0x10000000 ??
spi->SPIDAT1 |= CSHOLD //set bit 28
Регистр SPIDAT1 имеет адрес смещения 3Ch (0x01F0E000 + 0x3C)
У этого действительно есть поле CSHOLD (28-й бит)
Как работает = в этой ситуации?
Буду благодарен за любую помощь в выяснении ... все это%)