Я довольно новичок в программировании, поэтому я понятия не имею, что то, что я делаю, прямо здесь. Я думаю, что это таблица данных. По которому я следил, а также какой -то предварительно написанный код. Это пример того, где я пытаюсь выбрать указатель < /p>
writeNAFE16b(0x30, 0x8020, CS_AFE); //SYS_CONFIG0
writeNAFE16b(0x32, 0x0000, CS_AFE); //GLOBALARMENABLE
writeNAFE16b(0x00, 0x0000, CS_AFE); //CMD_SETPOINTER0
//sendCommand16(0x0000);
writeNAFE16b(0x20, 0x11F1, CS_AFE); //CH_CONFIG0
writeNAFE16b(0x21, 0x909B, CS_AFE); //CH_CONFIG1
writeNAFE16b(0x22, 0x4400, CS_AFE); //CH_CONFIG2
writeNAFE16b(0x23, 0xAC10, CS_AFE); //CH_CONFIG3
writeNAFE16b(0x01, 0x0000, CS_AFE); //CMD_SETPOINTER1
//sendCommand16(0x0001);
writeNAFE16b(0x20, 0x71F1, CS_AFE); //CH_CONFIG0
writeNAFE16b(0x21, 0x909B, CS_AFE); //CH_CONFIG1
writeNAFE16b(0x22, 0x4400, CS_AFE); //CH_CONFIG2
writeNAFE16b(0x23, 0xAC10, CS_AFE); //CH_CONFIG3
writeNAFE16b(0x24, 0x0003, CS_AFE); //CH_CONFIG4
< /code>
, а также здесь, где я пытаюсь прочитать данные < /p>
if (newDataAvailable){
newDataAvailable = false;
writeNAFE16b(0x00, 0x0000, CS_AFE);
//sendCommand16(0x0000);
delayMicroseconds(5);
int32_t raw1 = readNAFE24b(0x40,CS_AFE);//read channel 0
// Sign extension for 24-bit negative numbers
if (raw1 & 0x800000) {
raw1 |= 0xFF000000;
}
latestRaw1Value = raw1; // Save the result
writeNAFE16b(0x01, 0x0000, CS_AFE);
//sendCommand16(0x0001);
delayMicroseconds(5);
int32_t raw2 = readNAFE24b(0x41,CS_AFE);//read channel 1
// Sign extension for 24-bit negative numbers
if (raw2 & 0x800000) {
raw2 |= 0xFF000000;
}
latestRaw2Value = raw2; // Save the result
}
< /code>
Этот метод выбора указателя сработал в прошлом, но код не выполняется в соответствии с конкретными приложениями (а иногда я ясно вижу, что я читаю данные из неправильного регистра), поэтому я думаю, что я что -то упускаю, и иногда мне просто повезет. Я попытался переключить функцию writenafe () для sendcommand16 () (комментирован), но я не знаю, работает ли функция, как предполагаемая < /p>
#define SPI_CMD_WORD(addr, cmd, dir) (((addr & 0x01) 8) & 0xFF); // high byte first
SPI.transfer(cmd & 0xFF); // low byte
digitalWrite(CS_AFE, HIGH);
SPI.endTransaction();
}
< /code>
Я попытался переключаться между wriseenafe16b (0x01,0x0000) и SendCommand16 (0x0001) без успеха. Я распечатал значения реестра после записи для каждого из них, и сначала регистры Pointer1 были такими же, как старый кусок кода, я прокомментировал написание регистра PINTER0, и после нескольких загрузок регистры Pointer1 были правильными. Но когда я попытался прочитать оба регистра указателя снова после того, как перезагрузка (sendCommand16 (0x0016)) только регистры Pointer1 были зачитаны мне.>
Подробнее здесь: https://stackoverflow.com/questions/797 ... c-with-the
Как выбрать правильный канал NAFE13388 для чтения данных в/из C ++ с помощью комплекта Dev ESP32S3? ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
ESP32S3-Mini-1 Dev Board Crashs при использовании библиотеки "arduino_gfx.h"
Anonymous » » в форуме C++ - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-