CeDeX 0 5 апреля, 2005 Опубликовано 5 апреля, 2005 · Жалоба Работаю с MAX3100 (УАРТ с SPI-интерфейсом). У него есть фифо. так вот посылаю я туда по уарту последовательность "12345678", а считываю по SPI из фифо "1357". Вопрос: а почему через 1 байт считывается? что я не так делаю? УРА (озарение пришло на сл. день) Я все понял. Я после считывания делал запись этого же байта (для эха), так вот эта запись подпольно считывает сл. байт (правда про это в даташите написано). Как-то это они некрасиво сделали - работать неудобно будет Вопрос снят Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
АдскийОдуванчик 0 25 мая, 2007 Опубликовано 25 мая, 2007 (изменено) · Жалоба хм... У меня появилась проблема со схожими симптомами, но, похоже, что с другими причинами. Подключаю я через max3100 блютузку... Пытаюсь на оную послать строку: INQUIRY 5 NAME#d#a. В результате, после получения символа #0a блютузка отдаёт мне строку, которую она получила, и говорит что в ней синтаксическая ошибка. Посмотрев на строку, я согласился. INUR AE#a(два пробела) То есть, до блютузки дошли первый, и все чётные символы... А нечётные ушли в небытие... Посылка осуществляется по spi-ному прерыванию следующим образом: (изначально запихнули read config и из ответа получили R и T) Если T то посылаем (write data) Иначе посылаем dummy_write (write data с битом nTE = 1) Трассировка показала на следующее поведение: шаг 1) T=1, посылаем "I" (0x8249) шаг 2) T=1, посылаем "N"(0x824E) шаг 3) T=1, посылаем "Q"(0x8251) <<--<<--<<-- шаг 4) T=0, посылаем dummy write (0x8600) шаг 5) T=0, посылаем dummy write (0x8600) шаг 6) T=0, посылаем dummy write (0x8600) шаг 7) T=0, посылаем dummy write (0x8600) шаг 8) T=1, посылаем "U"(0x8255) шаг 9) T=1, посылаем "I"(0x8249) <<--<<--<<-- шаг 10) T=0, посылаем dummy write (0x8600) шаг 11) T=0, посылаем dummy write (0x8600) шаг 12) T=1, посылаем "R"(0x8252) шаг 13) T=1, посылаем "Y"(0x8259) <<--<<--<<-- шаг 14) T=0, посылаем dummy write (0x8600) шаг 15) T=0, посылаем dummy write (0x8600) шаг 16) T=1, посылаем " "(0x8220) шаг 17) T=1, посылаем "5"(0x8235) <<--<<--<<-- шаг 18) T=0, посылаем dummy write (0x8600) шаг 19) T=0, посылаем dummy write (0x8600) шаг 20) T=1, посылаем " "(0x8220) шаг 21) T=1, посылаем "N"(0x824E) <<--<<--<<-- шаг 22) T=0, посылаем dummy write (0x8600) шаг 23) T=0, посылаем dummy write (0x8600) шаг 24) T=1, посылаем "A"(0x8241) шаг 25) T=1, посылаем "M"(0x824D) <<--<<--<<-- шаг 26) T=0, посылаем dummy write (0x8600) шаг 27) T=1, посылаем "E"(0x8245) шаг 28) T=1, посылаем "#d"(0x820d) <<--<<--<<-- шаг 29) T=0, посылаем dummy write (0x8600) шаг 30) T=0, посылаем dummy write (0x8600) шаг 31) T=1, посылаем "#a"(0x820a) Посылки помеченные (<<--<<--<<--) не дошли до блютуза... Долго думал в чём причина... Пробовал вместо записи 0x8600 делать чтение 0х0000, однако результат был таким же самым... Есть ли у вас какие-либо варианты решения или обоснования причины данной проблемы? Наверняка кто-то уже успешно запускал MAX3100. Помогите, плиз! Изменено 25 мая, 2007 пользователем АдскийОдуванчик Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться