Сёха 0 10 августа, 2017 Опубликовано 10 августа, 2017 · Жалоба Всем привет! Я только учусь! Пробую работать с акселерометром L3GD20, установленным на плате STM32F3 Discovery. Читаю регистр WHO_AM_I (0Fh)... SPI1_CS_Set(LOW); SPI1_DR = 0x008F; while (!(SPI1_SR & (1<<1))); SPI1_CS_Set(HIGH); USART1_SendByte(SPI1_DR>>8); ...получаю вразумительный ответ 0xD4. Теперь читаю CTRL_REG1 (20h), ответ 0x07. Записываю в него 0x1F... SPI1_CS_Set(LOW); SPI1_DR = 0x0F20; while (!(SPI1_SR & (1<<1))); SPI1_CS_Set(HIGH); И заново читаю (20h), чтобы проверить, но SPI1_DR пуст!!!... не смотря на это анализатор показывает что акселерометр ответил верно... Считать регистр акселерометра получается только со второго раза... Почему так??? Что я упускаю??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sergey_Aleksandrovi4 2 26 октября, 2017 Опубликовано 26 октября, 2017 · Жалоба но SPI1_DR пуст!!! Там 0xFFFF после предыдущей транзакции, верно? Попробуйте извлекать данные из SPI_DR после каждой передачи, даже если они Вам не нужны. Если этого не делать, вновьпринятые данные не будут перезаписывать старые: ошибка Overrun с установкой соответствующего флага в SPI_SR. Т.е. при начале приёма буфер приёмника всегда должен быть готов (очищен). PS пишу по памяти, с STM довольно давно не работал, лень документацию перечитывать. Хм... посмотрел на дату сообщение и понял, что "слегка" опоздал с ответом. И не удалить теперь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 26 октября, 2017 Опубликовано 26 октября, 2017 · Жалоба ... не смотря на это анализатор показывает что акселерометр ответил верно... Если на лог.анализаторе - "то" а в контреллере - нет, значит дело в софте приема. Для начала - отладьте (проверка) работу по SPI. - отключите все слейвы от линий SPI контроллера. - соедините вход и выход SPI (MISO + MOSI). SCK и CS не нужны. - выполните простой тест софта: выдать на SPI сотню чисел с инкриментом (0,1,2 etc) и принять их в массив. Убедиться, что принятое соовтетствует переданному. Дальше - по ситуации, в зависимости от того - "прокатило" или нет :) ps - А каким анализатором пользуетесь ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 136 26 октября, 2017 Опубликовано 26 октября, 2017 · Жалоба ps - А каким анализатором пользуетесь ?На алиэкспрессе искать "8-канальный логический анализатор", стоит 4.5 евро, штука исключительно полезная. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 26 октября, 2017 Опубликовано 26 октября, 2017 · Жалоба На алиэкспрессе искать "8-канальный логический анализатор", стоит 4.5 евро, штука исключительно полезная. Я использую такое с софтом Saleae. На скриншоте выше - похожий интерфейс, но кое-что отличается. Может TS поделится инф. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 26 октября, 2017 Опубликовано 26 октября, 2017 · Жалоба Почему так??? Что я упускаю???[/b] даже если вы только пишете в СПИ надо вычитать дату uint32_t SPI_TransferByte(SPI_TypeDef *SPIx, uint8_t data) { uint32_t timeout; // All data transmitted/received but SPI may be busy so wait until done. // timeout = SPI_DELAY; while (SPIx->SR & SPI_I2S_FLAG_BSY) { /* if(!timeout--) return SPI_ERR; */} // Setting the Data Register (DR) transmits the byte of data on MOSI. SPIx->DR = data; // Wait for any data on MISO pin to be received. // timeout = SPI_DELAY; while (!(SPIx->SR & SPI_I2S_FLAG_RXNE)) {/* if(!timeout--) return SPI_ERR;*/ } // Return the data received on MISO pin. return (uint8_t)(SPIx->DR); } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 136 26 октября, 2017 Опубликовано 26 октября, 2017 · Жалоба На скриншоте выше - похожий интерфейс, но кое-что отличается.Просто картинка обрезана. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 1 27 октября, 2017 Опубликовано 27 октября, 2017 · Жалоба На алиэкспрессе искать "8-канальный логический анализатор", стоит 4.5 евро, штука исключительно полезная. это который на супрессе? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 136 27 октября, 2017 Опубликовано 27 октября, 2017 · Жалоба это который на супрессе?да Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 27 октября, 2017 Опубликовано 27 октября, 2017 · Жалоба это который на супрессе? оне все на нём :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 1 27 октября, 2017 Опубликовано 27 октября, 2017 · Жалоба оне все на нём :rolleyes: ну нет, там и на ксае попадались. Но ценник оно да, более другой Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться