реклама на сайте
подробности

 
 
> STM32F103C8 + S1D15D14 чтение из DDRAM
BittleF1998
сообщение Sep 15 2015, 13:00
Сообщение #1





Группа: Участник
Сообщений: 6
Регистрация: 15-09-15
Пользователь №: 88 416



Цель: масковые шрифты, пиктограммы.

Задача: чтение из памяти дисплея.

Осложнения: после установки необходимой области (команды 0x2A,0x2B) и отправки команды RAM data read(0x2E) перевожу SPI в bidirectional режим(BIDIMODE), однако на выходе(SPI->DR) почему-то 0xFF, тактовые импульсы есть, данных нет.

Действия: объединил промежуток опущенного CS (до этого поднимал после каждого байта) как сказано на 36 странице документации
изменил режим MISO с push-pull afio на open drain afio с добавлением 4.7к резистора на питание. Сначала был уверен, что линия MISO, оставшаяся внизу после передачи последнего бита(он там 0 получается- 0x2E) давит сигналы с дисплея, однако когда я отключал ножку PA7 от afio блока перед началом чтения, увидел, что вывод так и остаётся висеть, подтянутый к питанию.

Косяки: не вставляю dummy clock перед чтением. сделать это будет очень непросто с моей архитектурой кода. но пока не появились хоть какие-то данные, запариваться глупо.

разрабатываю часики в личное пользование.
сейчас установлен только дисплей, МК, внешний spi flash.
питание 3.3в от программатора, конденсатор керамика 10uf фильтр.
CS и A0 сохраняют свои состояния на протяжении всей(восьмибитной) передачи.
завершения передачи жду в пустом цикле, ожидая флага. исправлю как-нибудь потом.

если это чем-то поможет, могу предоставить исходники, фото монтажа, схемы, ссылки на используемую мной документацию.

Сообщение отредактировал BittleF1998 - Sep 15 2015, 13:03
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AlanDrakes
сообщение Sep 16 2015, 06:47
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 101
Регистрация: 2-05-15
Из: Россия, Омск
Пользователь №: 86 474



Чтож.. Похоже, по схеме подключения остаётся вопрос: Шина описана с выводами SCL, MOSI, CS и A0. Как понимаю, подключение - 4-х проводное, с общим проводом MOSI/MISO (получается вывод SIO в инструкции).
Судя по мануалу к STM32, нужно сделать следующее, чтобы работало именно так:
Передать байт (команду), затем непосредственно перед началом чтения ответа выполнить:
Код
SPIn->CR1 &= ~(SPI_CR1_SPE | SPI_CR1_BIDIOE); // Отключить SPI и переключить режим двустороннего обмена на приём
SPIn->CR1 |= (SPI_CR1_BIDIMODE);  // Включаем режим двустороннего обмена по одной линии (ТОЛЬКО ПРИЁМ)
SPIn->CR1 |= (SPI_CR1_SPE); // Разрешаем работу SPI

После этого данные будут принудительно получаться с шины. Нужно получить необходимое колчичество и отключить SPI, затем отключить и режим однопроводной шины.
Код
SPIn->CR1 &= ~(SPI_CR1_SPE | SPI_CR1_BIDIOE | SPI_CR1_BIDIMODE);

Должно помочь.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 03:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01342 секунд с 7
ELECTRONIX ©2004-2016