kopia lustrzana https://github.com/skuep/AIOC
Added various read-only debug registers to register map
rodzic
e853047a2c
commit
2fd3f70917
|
@ -15,7 +15,7 @@ void Settings_Init()
|
||||||
|
|
||||||
uint8_t Settings_RegWrite(uint8_t address, const uint8_t * buffer, uint8_t bufsize)
|
uint8_t Settings_RegWrite(uint8_t address, const uint8_t * buffer, uint8_t bufsize)
|
||||||
{
|
{
|
||||||
if (address < SETTINGS_REGMAP_SIZE) {
|
if (address < SETTINGS_REGMAP_READONLYADDR) {
|
||||||
assert(bufsize == sizeof(uint32_t));
|
assert(bufsize == sizeof(uint32_t));
|
||||||
|
|
||||||
uint32_t data = ( (((uint32_t) buffer[0]) << 0) |
|
uint32_t data = ( (((uint32_t) buffer[0]) << 0) |
|
||||||
|
@ -23,7 +23,9 @@ uint8_t Settings_RegWrite(uint8_t address, const uint8_t * buffer, uint8_t bufsi
|
||||||
(((uint32_t) buffer[2]) << 16) |
|
(((uint32_t) buffer[2]) << 16) |
|
||||||
(((uint32_t) buffer[3]) << 24) );
|
(((uint32_t) buffer[3]) << 24) );
|
||||||
|
|
||||||
|
__disable_irq();
|
||||||
settingsRegMap[address] = data;
|
settingsRegMap[address] = data;
|
||||||
|
__enable_irq();
|
||||||
|
|
||||||
return bufsize;
|
return bufsize;
|
||||||
}
|
}
|
||||||
|
@ -36,7 +38,9 @@ uint8_t Settings_RegRead(uint8_t address, uint8_t * buffer, uint8_t bufsize)
|
||||||
if (address < SETTINGS_REGMAP_SIZE) {
|
if (address < SETTINGS_REGMAP_SIZE) {
|
||||||
assert(bufsize == sizeof(uint32_t));
|
assert(bufsize == sizeof(uint32_t));
|
||||||
|
|
||||||
|
__disable_irq();
|
||||||
uint64_t data = settingsRegMap[address];
|
uint64_t data = settingsRegMap[address];
|
||||||
|
__enable_irq();
|
||||||
|
|
||||||
buffer[0] = (uint8_t) (data >> 0);
|
buffer[0] = (uint8_t) (data >> 0);
|
||||||
buffer[1] = (uint8_t) (data >> 8);
|
buffer[1] = (uint8_t) (data >> 8);
|
||||||
|
@ -52,9 +56,12 @@ void Settings_Store(void)
|
||||||
HAL_FLASH_Unlock();
|
HAL_FLASH_Unlock();
|
||||||
|
|
||||||
uint32_t pageError = 0;
|
uint32_t pageError = 0;
|
||||||
|
extern uint32_t * _eeprom;
|
||||||
|
uint32_t pageAddress = (uint32_t) &_eeprom;
|
||||||
|
|
||||||
FLASH_EraseInitTypeDef eraseInitStruct = {
|
FLASH_EraseInitTypeDef eraseInitStruct = {
|
||||||
.TypeErase = FLASH_TYPEERASE_PAGES,
|
.TypeErase = FLASH_TYPEERASE_PAGES,
|
||||||
.PageAddress = SETTINGS_FLASH_ADDRESS,
|
.PageAddress = pageAddress,
|
||||||
.NbPages = (SETTINGS_REGMAP_SIZE * sizeof(uint32_t) + FLASH_PAGE_SIZE-1) / FLASH_PAGE_SIZE
|
.NbPages = (SETTINGS_REGMAP_SIZE * sizeof(uint32_t) + FLASH_PAGE_SIZE-1) / FLASH_PAGE_SIZE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -64,7 +71,8 @@ void Settings_Store(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t wordAddress = SETTINGS_FLASH_ADDRESS;
|
extern uint32_t * _eeprom;
|
||||||
|
uint32_t wordAddress = (uint32_t) &_eeprom;
|
||||||
uint32_t wordCount = SETTINGS_REGMAP_SIZE;
|
uint32_t wordCount = SETTINGS_REGMAP_SIZE;
|
||||||
uint32_t * wordPtr = settingsRegMap;
|
uint32_t * wordPtr = settingsRegMap;
|
||||||
|
|
||||||
|
@ -134,5 +142,25 @@ void Settings_Default(void)
|
||||||
settingsRegMap[SETTINGS_REG_VCOS_LVLCTRL] = SETTINGS_REG_VCOS_LVLCTRL_DEFAULT;
|
settingsRegMap[SETTINGS_REG_VCOS_LVLCTRL] = SETTINGS_REG_VCOS_LVLCTRL_DEFAULT;
|
||||||
settingsRegMap[SETTINGS_REG_VCOS_TIMCTRL] = SETTINGS_REG_VCOS_TIMCTRL_DEFAULT;
|
settingsRegMap[SETTINGS_REG_VCOS_TIMCTRL] = SETTINGS_REG_VCOS_TIMCTRL_DEFAULT;
|
||||||
|
|
||||||
|
/* AIOC Debug registers */
|
||||||
|
settingsRegMap[SETTINGS_REG_DBGAIOC0] = SETTINGS_REG_DBGAIOC0_DEFAULT;
|
||||||
|
|
||||||
|
/* Audio Debug registers */
|
||||||
|
settingsRegMap[SETTINGS_REG_DBGAUDIO0] = SETTINGS_REG_DBGAUDIO0_DEFAULT;
|
||||||
|
settingsRegMap[SETTINGS_REG_DBGAUDIO1] = SETTINGS_REG_DBGAUDIO1_DEFAULT;
|
||||||
|
settingsRegMap[SETTINGS_REG_DBGAUDIO2] = SETTINGS_REG_DBGAUDIO2_DEFAULT;
|
||||||
|
settingsRegMap[SETTINGS_REG_DBGAUDIO3] = SETTINGS_REG_DBGAUDIO3_DEFAULT;
|
||||||
|
settingsRegMap[SETTINGS_REG_DBGAUDIO4] = SETTINGS_REG_DBGAUDIO4_DEFAULT;
|
||||||
|
settingsRegMap[SETTINGS_REG_DBGAUDIO5] = SETTINGS_REG_DBGAUDIO5_DEFAULT;
|
||||||
|
settingsRegMap[SETTINGS_REG_DBGAUDIO6] = SETTINGS_REG_DBGAUDIO6_DEFAULT;
|
||||||
|
settingsRegMap[SETTINGS_REG_DBGAUDIO7] = SETTINGS_REG_DBGAUDIO7_DEFAULT;
|
||||||
|
settingsRegMap[SETTINGS_REG_DBGAUDIO8] = SETTINGS_REG_DBGAUDIO9_DEFAULT;
|
||||||
|
settingsRegMap[SETTINGS_REG_DBGAUDIO9] = SETTINGS_REG_DBGAUDIO10_DEFAULT;
|
||||||
|
settingsRegMap[SETTINGS_REG_DBGAUDIO10] = SETTINGS_REG_DBGAUDIO11_DEFAULT;
|
||||||
|
settingsRegMap[SETTINGS_REG_DBGAUDIO11] = SETTINGS_REG_DBGAUDIO11_DEFAULT;
|
||||||
|
settingsRegMap[SETTINGS_REG_DBGAUDIO12] = SETTINGS_REG_DBGAUDIO12_DEFAULT;
|
||||||
|
settingsRegMap[SETTINGS_REG_DBGAUDIO13] = SETTINGS_REG_DBGAUDIO13_DEFAULT;
|
||||||
|
settingsRegMap[SETTINGS_REG_DBGAUDIO14] = SETTINGS_REG_DBGAUDIO14_DEFAULT;
|
||||||
|
settingsRegMap[SETTINGS_REG_DBGAUDIO15] = SETTINGS_REG_DBGAUDIO15_DEFAULT;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include "usb_descriptors.h"
|
#include "usb_descriptors.h"
|
||||||
|
|
||||||
#define SETTINGS_REGMAP_SIZE 256
|
#define SETTINGS_REGMAP_SIZE 256
|
||||||
|
#define SETTINGS_REGMAP_READONLYADDR 0xC0
|
||||||
|
|
||||||
extern uint32_t settingsRegMap[SETTINGS_REGMAP_SIZE];
|
extern uint32_t settingsRegMap[SETTINGS_REGMAP_SIZE];
|
||||||
|
|
||||||
|
@ -188,10 +189,10 @@ extern uint32_t settingsRegMap[SETTINGS_REGMAP_SIZE];
|
||||||
/* Virtual PTT timing control register */
|
/* Virtual PTT timing control register */
|
||||||
#define SETTINGS_REG_VPTT_TIMCTRL 0x84
|
#define SETTINGS_REG_VPTT_TIMCTRL 0x84
|
||||||
#define SETTINGS_REG_VPTT_TIMCTRL_DEFAULT (SETTINGS_REG_VPTT_TIMCTRL_TIMEOUT_DFLT)
|
#define SETTINGS_REG_VPTT_TIMCTRL_DEFAULT (SETTINGS_REG_VPTT_TIMCTRL_TIMEOUT_DFLT)
|
||||||
/* TIMEOUT: Timeout (trailing) time in microseconds */
|
/* TIMEOUT: Timeout (trailing) time in milliseconds in 12.4 format */
|
||||||
#define SETTINGS_REG_VPTT_TIMCTRL_TIMEOUT_DFLT ((uint32_t) 10000 << SETTINGS_REG_VPTT_TIMCTRL_TIMEOUT_OFFS)
|
#define SETTINGS_REG_VPTT_TIMCTRL_TIMEOUT_DFLT ((uint32_t) (20 << 4) << SETTINGS_REG_VPTT_TIMCTRL_TIMEOUT_OFFS)
|
||||||
#define SETTINGS_REG_VPTT_TIMCTRL_TIMEOUT_OFFS 0
|
#define SETTINGS_REG_VPTT_TIMCTRL_TIMEOUT_OFFS 0
|
||||||
#define SETTINGS_REG_VPTT_TIMCTRL_TIMEOUT_MASK 0x0000FFFFUL
|
#define SETTINGS_REG_VPTT_TIMCTRL_TIMEOUT_MASK 0xFFFFFFFFUL
|
||||||
|
|
||||||
/* Virtual COS level control register */
|
/* Virtual COS level control register */
|
||||||
#define SETTINGS_REG_VCOS_LVLCTRL 0x92
|
#define SETTINGS_REG_VCOS_LVLCTRL 0x92
|
||||||
|
@ -204,11 +205,140 @@ extern uint32_t settingsRegMap[SETTINGS_REGMAP_SIZE];
|
||||||
/* Virtual COS timing control register */
|
/* Virtual COS timing control register */
|
||||||
#define SETTINGS_REG_VCOS_TIMCTRL 0x94
|
#define SETTINGS_REG_VCOS_TIMCTRL 0x94
|
||||||
#define SETTINGS_REG_VCOS_TIMCTRL_DEFAULT (SETTINGS_REG_VCOS_TIMCTRL_TIMEOUT_DFLT)
|
#define SETTINGS_REG_VCOS_TIMCTRL_DEFAULT (SETTINGS_REG_VCOS_TIMCTRL_TIMEOUT_DFLT)
|
||||||
/* TIMEOUT: Timeout (trailing) time in microseconds */
|
/* TIMEOUT: Timeout (trailing) time in milliseconds in 12.4 format */
|
||||||
#define SETTINGS_REG_VCOS_TIMCTRL_TIMEOUT_DFLT ((uint32_t) 10000 << SETTINGS_REG_VCOS_TIMCTRL_TIMEOUT_OFFS)
|
#define SETTINGS_REG_VCOS_TIMCTRL_TIMEOUT_DFLT ((uint32_t) (200 << 4) << SETTINGS_REG_VCOS_TIMCTRL_TIMEOUT_OFFS)
|
||||||
#define SETTINGS_REG_VCOS_TIMCTRL_TIMEOUT_OFFS 0
|
#define SETTINGS_REG_VCOS_TIMCTRL_TIMEOUT_OFFS 0
|
||||||
#define SETTINGS_REG_VCOS_TIMCTRL_TIMEOUT_MASK 0x0000FFFFUL
|
#define SETTINGS_REG_VCOS_TIMCTRL_TIMEOUT_MASK 0x0000FFFFUL
|
||||||
|
|
||||||
|
/* AIOC debug register 0 */
|
||||||
|
#define SETTINGS_REG_DBGAIOC0 0xC0
|
||||||
|
#define SETTINGS_REG_DBGAIOC0_DEFAULT 0
|
||||||
|
/* Various digital signal states */
|
||||||
|
#define SETTINGS_REG_DBGAIOC0_PTT1STATE_MASK 0x00010000UL
|
||||||
|
#define SETTINGS_REG_DBGAIOC0_PTT2STATE_MASK 0x00020000UL
|
||||||
|
|
||||||
|
/* UAC audio debug register 0 */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO0 0xD0
|
||||||
|
#define SETTINGS_REG_DBGAUDIO0_DEFAULT 0
|
||||||
|
/* Playback or recording muted (master and first channel) */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO0_RECMUTE0_MASK 0x00010000UL
|
||||||
|
#define SETTINGS_REG_DBGAUDIO0_RECMUTE1_MASK 0x00020000UL
|
||||||
|
#define SETTINGS_REG_DBGAUDIO0_PLAYMUTE0_MASK 0x00100000UL
|
||||||
|
#define SETTINGS_REG_DBGAUDIO0_PLAYMUTE1_MASK 0x00200000UL
|
||||||
|
/* Virtual PTT and COS states */
|
||||||
|
#define SETTINGS_REG_DBGAIOC0_VPTTSTATE_MASK 0x01000000UL
|
||||||
|
#define SETTINGS_REG_DBGAIOC0_VCOSSTATE_MASK 0x10000000UL
|
||||||
|
|
||||||
|
/* Playback and recording state */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO0_RECSTATE_OFFS 24
|
||||||
|
#define SETTINGS_REG_DBGAUDIO0_RECSTATE_MASK 0x0F000000UL
|
||||||
|
#define SETTINGS_REG_DBGAUDIO0_RECSTATE_OFF_ENUM 0
|
||||||
|
#define SETTINGS_REG_DBGAUDIO0_RECSTATE_START_ENUM 1
|
||||||
|
#define SETTINGS_REG_DBGAUDIO0_RECSTATE_RUN_ENUM 2
|
||||||
|
#define SETTINGS_REG_DBGAUDIO0_PLAYSTATE_OFFS 28
|
||||||
|
#define SETTINGS_REG_DBGAUDIO0_PLAYSTATE_MASK 0xF0000000UL
|
||||||
|
#define SETTINGS_REG_DBGAUDIO0_PLAYSTATE_OFF_ENUM 0
|
||||||
|
#define SETTINGS_REG_DBGAUDIO0_PLAYSTATE_START_ENUM 1
|
||||||
|
#define SETTINGS_REG_DBGAUDIO0_PLAYSTATE_RUN_ENUM 2
|
||||||
|
|
||||||
|
/* Audio debug register 1 */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO1 0xD1
|
||||||
|
#define SETTINGS_REG_DBGAUDIO1_DEFAULT 0
|
||||||
|
|
||||||
|
/* Audio debug register 2 */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO2 0xD2
|
||||||
|
#define SETTINGS_REG_DBGAUDIO2_DEFAULT 0
|
||||||
|
/* Recording samplerate */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO2_RECRATE_OFFS 0
|
||||||
|
#define SETTINGS_REG_DBGAUDIO2_RECRATE_MASK 0xFFFFFFFFUL
|
||||||
|
|
||||||
|
/* Audio debug register 3 */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO3 0xD3
|
||||||
|
#define SETTINGS_REG_DBGAUDIO3_DEFAULT 0
|
||||||
|
/* Recording volume (master and first channel) */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO3_RECVOL0_OFFS 0
|
||||||
|
#define SETTINGS_REG_DBGAUDIO3_RECVOL0_MASK 0x0000FFFFUL
|
||||||
|
#define SETTINGS_REG_DBGAUDIO3_RECVOL1_OFFS 16
|
||||||
|
#define SETTINGS_REG_DBGAUDIO3_RECVOL1_MASK 0xFFFF0000UL
|
||||||
|
|
||||||
|
/* TODO: D4, D5, D6 -> Recording buffer levels (avg/min/max) */
|
||||||
|
|
||||||
|
/* Audio debug register 4 */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO4 0xD4
|
||||||
|
#define SETTINGS_REG_DBGAUDIO4_DEFAULT 0
|
||||||
|
|
||||||
|
/* Audio debug register 5 */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO5 0xD5
|
||||||
|
#define SETTINGS_REG_DBGAUDIO5_DEFAULT 0
|
||||||
|
|
||||||
|
/* Audio debug register 6 */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO6 0xD6
|
||||||
|
#define SETTINGS_REG_DBGAUDIO6_DEFAULT 0
|
||||||
|
|
||||||
|
/* Audio debug register 7 */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO7 0xD7
|
||||||
|
#define SETTINGS_REG_DBGAUDIO7_DEFAULT 0
|
||||||
|
|
||||||
|
/* Audio debug register 8 */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO8 0xD8
|
||||||
|
#define SETTINGS_REG_DBGAUDIO8_DEFAULT 0
|
||||||
|
/* Playback samplerate */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO8_PLAYRATE_OFFS 0
|
||||||
|
#define SETTINGS_REG_DBGAUDIO8_PLAYRATE_MASK 0xFFFFFFFFUL
|
||||||
|
|
||||||
|
/* Audio debug register 9 */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO9 0xD9
|
||||||
|
#define SETTINGS_REG_DBGAUDIO9_DEFAULT 0
|
||||||
|
/* Playback volume (master and first channel) */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO9_PLAYVOL0_OFFS 0
|
||||||
|
#define SETTINGS_REG_DBGAUDIO9_PLAYVOL0_MASK 0x0000FFFFUL
|
||||||
|
#define SETTINGS_REG_DBGAUDIO9_PLAYVOL1_OFFS 16
|
||||||
|
#define SETTINGS_REG_DBGAUDIO9_PLAYVOL1_MASK 0xFFFF0000UL
|
||||||
|
|
||||||
|
/* Audio debug register 10 */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO10 0xDA
|
||||||
|
#define SETTINGS_REG_DBGAUDIO10_DEFAULT 0
|
||||||
|
/* Average playback buffer level */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO10_PLAYBUFAVG_OFFS 0
|
||||||
|
#define SETTINGS_REG_DBGAUDIO10_PLAYBUFAVG_MASK 0x0000FFFFUL
|
||||||
|
|
||||||
|
/* Audio debug register 11 */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO11 0xDB
|
||||||
|
#define SETTINGS_REG_DBGAUDIO11_DEFAULT 0
|
||||||
|
/* Minimum playback buffer level */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO11_PLAYBUFMIN_OFFS 0
|
||||||
|
#define SETTINGS_REG_DBGAUDIO11_PLAYBUFMIN_MASK 0x0000FFFFUL
|
||||||
|
|
||||||
|
/* Audio debug register 12 */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO12 0xDC
|
||||||
|
#define SETTINGS_REG_DBGAUDIO12_DEFAULT 0
|
||||||
|
/* Maximum playback buffer level */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO12_PLAYBUFMAX_OFFS 0
|
||||||
|
#define SETTINGS_REG_DBGAUDIO12_PLAYBUFMAX_MASK 0x0000FFFFUL
|
||||||
|
|
||||||
|
/* Audio debug register 13 */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO13 0xDD
|
||||||
|
#define SETTINGS_REG_DBGAUDIO13_DEFAULT 0
|
||||||
|
/* Average UAC2.0 Feedback Value since last playback */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO13_PLAYFBAVG_OFFS 0
|
||||||
|
#define SETTINGS_REG_DBGAUDIO13_PLAYFBAVG_MASK 0xFFFFFFFFUL
|
||||||
|
|
||||||
|
/* Audio debug register 14 */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO14 0xDE
|
||||||
|
#define SETTINGS_REG_DBGAUDIO14_DEFAULT 0
|
||||||
|
/* Minimum UAC2.0 Feedback Value since last playback */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO14_PLAYFBMIN_OFFS 0
|
||||||
|
#define SETTINGS_REG_DBGAUDIO14_PLAYFBMIN_MASK 0xFFFFFFFFUL
|
||||||
|
|
||||||
|
/* Audio debug register 15 */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO15 0xDF
|
||||||
|
#define SETTINGS_REG_DBGAUDIO15_DEFAULT 0
|
||||||
|
/* Maximum UAC2.0 Feedback Value since last playback */
|
||||||
|
#define SETTINGS_REG_DBGAUDIO15_PLAYFBMAX_OFFS 0
|
||||||
|
#define SETTINGS_REG_DBGAUDIO15_PLAYFBMAX_MASK 0xFFFFFFFFUL
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void Settings_Init();
|
void Settings_Init();
|
||||||
uint8_t Settings_RegWrite(uint8_t address, const uint8_t * buffer, uint8_t bufsize);
|
uint8_t Settings_RegWrite(uint8_t address, const uint8_t * buffer, uint8_t bufsize);
|
||||||
uint8_t Settings_RegRead(uint8_t address, uint8_t * buffer, uint8_t bufsize);
|
uint8_t Settings_RegRead(uint8_t address, uint8_t * buffer, uint8_t bufsize);
|
||||||
|
|
Ładowanie…
Reference in New Issue