Я довольно новичок в программировании, поэтому я понятия не имею, что то, что я делаю, прямо здесь. Я думаю, что это таблица данных. По которому я следил, а также какой -то предварительно написанный код. Это пример того, где я пытаюсь выбрать указатель < /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++
Программы на C++. Форум разработчиков
1756218308
Anonymous
Я довольно новичок в программировании, поэтому я понятия не имею, что то, что я делаю, прямо здесь. Я думаю, что это таблица данных. По которому я следил, а также какой -то предварительно написанный код. Это пример того, где я пытаюсь выбрать указатель < /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 были зачитаны мне.>
Подробнее здесь: [url]https://stackoverflow.com/questions/79746940/how-do-i-select-the-right-nafe13388-channel-to-read-data-to-from-in-c-with-the[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия