STM32 новичку в ARM что к чему
Re: STM32 новичку в ARM что к чему
http://www.st.com/st-web-ui/static/acti ... 171691.pdf
Смотреть Figure 1. Power supply overview. Там всё нарисовано.
Смотреть Figure 1. Power supply overview. Там всё нарисовано.
- Реклама
Re: STM32 новичку в ARM что к чему
Спасибо!!!!
- Alexey_N
- Сверлит текстолит когтями
- Сообщения: 1273
- Зарегистрирован: Вт фев 01, 2011 17:56:40
- Откуда: г. Жуковка, Брянская обл.
Re: STM32 новичку в ARM что к чему
Товарищи, кто работал с китайским экраном на ILI9341 по SPI? Как читать с него? Запись данных идет отлично, но не могу прочитать ни один регистр (пробовал 0x04, 0xD3), все вроде согласно даташиту, анализатором смотрю шину - команда подается, а экран молчит. Но на посыл любой команды шина MISO отвечает - вроде как spi правильно работает. В сети много примеров работы с ним на C и через какую-то загадочную команду D9, которой нет в даташите.
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Re: STM32 новичку в ARM что к чему
Вот тут можно почитать, там и подключение по FSMC описывается, раз уж Вы в ветке про армы пишите.
https://hubstub.ru/electronics/44-inici ... ega16.html
https://hubstub.ru/electronics/61-podkl ... i9314.html
https://hubstub.ru/electronics/44-inici ... ega16.html
https://hubstub.ru/electronics/61-podkl ... i9314.html
- Alexey_N
- Сверлит текстолит когтями
- Сообщения: 1273
- Зарегистрирован: Вт фев 01, 2011 17:56:40
- Откуда: г. Жуковка, Брянская обл.
Re: STM32 новичку в ARM что к чему
Спасибо, но это несколько не то, там про инициализацию, да еще и для дисплея с параллельным интерфейсом ...
Другой вопрос тогда, как правильно инициализировать SPI, смотрю разные исходники: кто MISO как input pull-down настраивает, кто как AF push-pull out, кто как AF open-drain. Где же правда. RM0008 говорит, что должен быть input (floating, pull-up или pull-down).
Другой вопрос тогда, как правильно инициализировать SPI, смотрю разные исходники: кто MISO как input pull-down настраивает, кто как AF push-pull out, кто как AF open-drain. Где же правда. RM0008 говорит, что должен быть input (floating, pull-up или pull-down).
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
- Реклама
Re: STM32 новичку в ARM что к чему
А не факт что у вас 9341 а не что-то подобное и не факт что там реализовано чтение.
Правильная настройка SPI по даташиту. Подтяжка только по надобности и необходимости. Зависит от протокола общения МК с девайсом. Как пример SD. Но там юзают внешнюю подтяжку и номиналы уже оговорены в документации на SD.
Правильная настройка SPI по даташиту. Подтяжка только по надобности и необходимости. Зависит от протокола общения МК с девайсом. Как пример SD. Но там юзают внешнюю подтяжку и номиналы уже оговорены в документации на SD.
- Alexey_N
- Сверлит текстолит когтями
- Сообщения: 1273
- Зарегистрирован: Вт фев 01, 2011 17:56:40
- Откуда: г. Жуковка, Брянская обл.
Re: STM32 новичку в ARM что к чему
А какие есть варианты еще подобного?scorpi_0n писал(а):А не факт что у вас 9341
Но выход SDO (MISO) там есть для чего-то ...scorpi_0n писал(а):не факт что там реализовано чтение
Вот смотрю на шине, индикатор что-то выдает:
- Вложения
-
- readid.png
- (67.89 КБ) 428 скачиваний
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Re: STM32 новичку в ARM что к чему
Не знаю. С 9341 дела не имел и не задавался целью. Но попадались другие где чтение не работало. Или работало но по ID не удавалось опознать чип. Решалось как и у всех методом подбора инита.Alexey_N писал(а): А какие есть варианты еще подобного?
Кетай. Там что угодно может быть. Особенно если малая цена.Но выход SDO (MISO) там есть для чего-то ...
Больше похоже на мусор. Нет соответствия с сигналом CLK.Вот смотрю на шине, индикатор что-то выдает:
- Alexey_N
- Сверлит текстолит когтями
- Сообщения: 1273
- Зарегистрирован: Вт фев 01, 2011 17:56:40
- Откуда: г. Жуковка, Брянская обл.
Re: STM32 новичку в ARM что к чему
Да, действительно, он по шине MISO так выдает на все команды мусор, хотя их и принимает. А что там по поводу подбора инита?scorpi_0n писал(а):Больше похоже на мусор. Нет соответствия с сигналом CLK.
UPD. Хотя вот команда чтения GRAM работает вроде как:
- Вложения
-
- gram.png
- (66.8 КБ) 411 скачиваний
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
- Alexey_N
- Сверлит текстолит когтями
- Сообщения: 1273
- Зарегистрирован: Вт фев 01, 2011 17:56:40
- Откуда: г. Жуковка, Брянская обл.
Re: STM32 новичку в ARM что к чему
Подскажите такой момент. SPI настроена в режиме Full-duplex, т.е. как я понял, при записи байта происходит сразу и чтение (что видно на осциллограмме выше). Использую такую функцию:
Но, почему то, при чтении из регистра DR читается не тот байт, который был выдан на шину в момент записи, а предыдущий, почему так?
Код: Выделить всё
_spi_rw_byte:
push {r5, r6, lr}
ldr r5, [_tft_spi]
virtual at r5
.spi SPI_RegMap
end virtual
@@: ldr r6, [.spi.SR]
tst r6, SPI_SR_TXE
beq @r
str r0, [.spi.DR]
@@: ldr r6, [.spi.SR]
tst r6, SPI_SR_RXNE
beq @r
ldr r2, [.spi.DR]
@@: ldr r6, [.spi.SR]
tst r6, SPI_SR_BSY
bne @r
pop {r5, r6, pc}
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
- Andrew Martin
- Вымогатель припоя
- Сообщения: 606
- Зарегистрирован: Вт июн 25, 2013 18:45:07
Re: STM32 новичку в ARM что к чему
Alexey_N писал(а):Код: Выделить всё
_spi_rw_byte: push {r5, r6, lr} ldr r5, [_tft_spi] virtual at r5 .spi SPI_RegMap end virtual @@: ldr r6, [.spi.SR] tst r6, SPI_SR_TXE beq @r str r0, [.spi.DR] @@: ldr r6, [.spi.SR] tst r6, SPI_SR_RXNE beq @r ldr r2, [.spi.DR] @@: ldr r6, [.spi.SR] tst r6, SPI_SR_BSY bne @r pop {r5, r6, pc}
1) Если работаете в режиме 8 или менее бит, то тогда желательно использовать byte access (ldrb/strb).
Код: Выделить всё
strb r2, byte [.spi.DR]- Alexey_N
- Сверлит текстолит когтями
- Сообщения: 1273
- Зарегистрирован: Вт фев 01, 2011 17:56:40
- Откуда: г. Жуковка, Брянская обл.
Re: STM32 новичку в ARM что к чему
Вот инициализация:
UPD. В RM0008 на рис. 240 видно, что прочитанный байт появится в буфере, когда завершатся 8 тактов и установится флаг RXNE, что я вроде и делаю в коде. Применительно к моему случаю получается такая картина (240my.jpg), которую тоже вроде как подтверждает осциллограмма с анализатора (gram2.jpg), но по факту после задержки 50мкс (необходима для отработки посланной команды дисплею), первое чтение возвращает 0x00 (тут все ок), а вот второе тоже 0x00, хотя должно быть 0xFC, если читать дальше что возвращается это самое 0xFC, потом 0x00 и, наконец последнее 0xFC. Получается, что чтение отстает. Не могу найти где косяк.
Код: Выделить всё
_tft_iface_init:
push {r0, r1, r2, lr}
; TFT_PIN_CS: p-p out
; TFT_PIN_LED: p-p out
; TFT_PIN_RST: p-p out
; TFT_PIN_DC: p-p out
; TFT_PIN_SCK: out push-pull, AF
; TFT_PIN_MISO: in pull-down, AF
; TFT_PIN_MOSI: out push-pull, AF
ldr r1, [_tft_port]
virtual at r1
.gpio GPIOx_RegMap
end virtual
ldr r0, [_tft_pin_cf]
str r0, [.gpio.CRL]
; SPI_Direction_2Lines_FullDuplex
; SPI_Mode_Master
; SPI_DataSize_8b
; SPI_CPOL_Low
; SPI_CPHA_1Edge
; SPI_NSS_Soft
; SPI_BaudRatePrescaler_16
; SPI_FirstBit_MSB
ldr r1, [_tft_spi]
virtual at r1
.spi SPI_RegMap
end virtual
ldr r0, [_spi_cr1]
str r0, [.spi.CR1]
orrs r0, SPI_CR1_SPE
str r0, [.spi.CR1]
pop {r0, r1, r2, pc}
_tft_port dw TFT_PORT
_tft_pin_cs dw TFT_PIN_CS
_tft_pin_dc dw TFT_PIN_DC
_tft_pin_rst dw TFT_PIN_RST
_tft_pin_led dw TFT_PIN_LED
_tft_pin_cf dw \
GPIO_CRL_MODE0 + \ ; TFT_PIN_CS
GPIO_CRL_MODE1 + \ ; TFT_PIN_LED
GPIO_CRL_MODE2 + \ ; TFT_PIN_RST
GPIO_CRL_MODE3 + \ ; TFT_PIN_DC
GPIO_CRL_CNF4_0 + \
GPIO_CRL_CNF5_1 + GPIO_CRL_MODE5 + \ ; TFT_PIN_SCK
GPIO_CRL_CNF6_1 + \ ; TFT_PIN_MISO
GPIO_CRL_CNF7_1 + GPIO_CRL_MODE7 ; TFT_PIN_MOSI
_tft_spi dw TFT_SPI
_spi_cr1 dw SPI_CR1_MSTR + \
SPI_CR1_SSM + \
SPI_CR1_SSI + \
SPI_CR1_BR_1 + SPI_CR1_BR_0 ; fpclk/16
- Вложения
-
- 240my.jpg
- (160.46 КБ) 279 скачиваний
-
- gram2.jpg
- (187.51 КБ) 425 скачиваний
-
- 240.png
- (75.94 КБ) 415 скачиваний
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
- Andrew Martin
- Вымогатель припоя
- Сообщения: 606
- Зарегистрирован: Вт июн 25, 2013 18:45:07
Re: STM32 новичку в ARM что к чему
RM0008, page 701:
Оно?
Я так понял, что первый принятый байт можно читать после двух отправленных.
2. Write the first data item to be transmitted into the SPI_DR register (this clears the TXE
flag).
3. Wait until TXE=1 and write the second data item to be transmitted. Then wait until
RXNE=1 and read the SPI_DR to get the first received data item (this clears the RXNE
bit). Repeat this operation for each data item to be transmitted/received until the n–1
received data.
4. Wait until RXNE=1 and read the last received data.
Оно?
- Alexey_N
- Сверлит текстолит когтями
- Сообщения: 1273
- Зарегистрирован: Вт фев 01, 2011 17:56:40
- Откуда: г. Жуковка, Брянская обл.
Re: STM32 новичку в ARM что к чему
Хм, это что, получается надо еще что-то послать, чтобы прочитать первое? А если нельзя больше посылать? Как прочитать тогда?
UPD. Ура, похоже нашел причину. У меня было две процедуры записи/чтения байта, точнее одна просто записывала (ждет флаг TXE и выполняет strb), вторая - rw (аналогично записывает, но еще ждем флаг RXNE и читает: ldrb), для команды я использовал ту, что только пишет, а данные читал второй, в результате одна операция чтения пропускалась и флаг rxne не сбрасывался. Когда оставил только rw_byte функцию, убрал лишние проверки флага BSY (он все равно почти всегда 1, да и на окончание передачи указывает RXNE тоже) все пришло в норму.
UPD. Ура, похоже нашел причину. У меня было две процедуры записи/чтения байта, точнее одна просто записывала (ждет флаг TXE и выполняет strb), вторая - rw (аналогично записывает, но еще ждем флаг RXNE и читает: ldrb), для команды я использовал ту, что только пишет, а данные читал второй, в результате одна операция чтения пропускалась и флаг rxne не сбрасывался. Когда оставил только rw_byte функцию, убрал лишние проверки флага BSY (он все равно почти всегда 1, да и на окончание передачи указывает RXNE тоже) все пришло в норму.
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Re: STM32 новичку в ARM что к чему
Надо отличать непрерывный (continuous) и прерывный т. е. обычный (discontinuous) режим передачи по SPI. Это связано с наличием FIFO и присутствуют эти режимы во всех STM8 и STM32.
Непрерывный режим описан двумя постами выше.
Обычный режим работает как обычно. Загружаем данные в DR ждём когда RXNE=1 и вычитываем DR. Загружаем следующие данные в DR ждём когда RXNE=1 и вычитываем DR и т.д.
Непрерывный режим описан двумя постами выше.
Обычный режим работает как обычно. Загружаем данные в DR ждём когда RXNE=1 и вычитываем DR. Загружаем следующие данные в DR ждём когда RXNE=1 и вычитываем DR и т.д.
- Alexey_N
- Сверлит текстолит когтями
- Сообщения: 1273
- Зарегистрирован: Вт фев 01, 2011 17:56:40
- Откуда: г. Жуковка, Брянская обл.
Re: STM32 новичку в ARM что к чему
Учусь только
SPI первый раз программирую. Благодарю за помощь. Все заработало, и чтение регистров и чтение пикселей.
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Re: STM32 новичку в ARM что к чему
Alexey_N, если код по ссылке допилить...
http://blablacode.ru/%D0%BC%D0%B8%D0%BA ... i9341.html
http://blablacode.ru/node/513
http://blablacode.ru/%D0%BC%D0%B8%D0%BA ... i9341.html
http://blablacode.ru/node/513
Re: STM32 новичку в ARM что к чему
А есть ли в этом особый смысл? Там пишут.dosikus писал(а):Alexey_N, если код по ссылке допилить...
Что сравнивать малину с её набортной РАМ?Т.е. возможно и кино крутить на этом дисплее
Слышал что можно и не разбивать но опять же РАМ то не в избытке.на самом деле DMA умеет передавать только 65535 байт. А нам нужно передать 320*240*2, что несколько больше. Пришлось разбить на несколько тразакций.
ТЕ нужно задействовать если оно есть. Люди пишут что на СТМ8 и ТФТ от мобилы заполнение дисплея за 19 мС и тиринга не видно. А здесь всё таки F407.Скорость увеличилась в разы. Но все равно заметно обновление кадра.
Re: STM32 новичку в ARM что к чему
А хз. Стоит ли вообще в эмбедд возвращаться? 
Да и ссылки кинул ибо товарищ не мог с SPI найти.
Да и ссылки кинул ибо товарищ не мог с SPI найти.
Re: STM32 новичку в ARM что к чему
Не знаю. У меня пока никаких явных предпосылок нет. Как и скакать впереди планеты всей. Всё на уровне ненавязчивого хобби.
Да SPI тут по любому будет тормозом с какой стороны не посмотри. Я к тому чтобы не было особых надежд на чудо.товарищ не мог с SPI найти


