PDA

Просмотр полной версии : zx8 zx128 на stm32f407



sdima1357
13.11.2020, 23:58
Zx spectrum128,Zx spectrum48 + CP/M 2.2 и терминал на STM32F407 (поклоковая эмуляция )
Есть эмуляция AY-3-8910 , вход с USB keyboard. Читает .Z80 , .SNA .TAP.
MP3 player.

CP/M - 80x25 много программ отсюда https://obsolescence.wixsite.com/obsolescence/multicomp-fpga-cpm-demo-disk

Железа примерно на $20 . Паяльник не обязателен. Детали с aliexpress готовые.

Исходники

320х240 16 бит:
https://github.com/sdima1357/spectrum128_cpm

Добавил 320х240 и 480х320 8 бит LCDs:
https://github.com/sdima1357/spectrum128_cpm_8bit

spectrum

https://www.youtube.com/watch?v=WKQc5I55Ji8

cp/m

https://www.youtube.com/watch?v=-h3XCy79aJw&t=46s

Dotoro
14.11.2020, 14:34
Интересно, а можно подробнее про железо?

Tronix
14.11.2020, 15:11
Интересно, а можно подробнее про железо?

Да наверно какая-нить такая девборда по типу : Плата разработки STM32F407VET6, устройство для обучения, системная плата ARM Core 2,8/3,2 дюймов, ЖК-дисплей, модуль привода ILI9341, TFT-экран (https://aliexpress.ru/item/4000953664266.html?spm=a2g0o.productlist.0.0.3f747 cb8wEFGQq&algo_pvid=b837af34-a532-4555-b9b3-fac029cedbd9&algo_expid=b837af34-a532-4555-b9b3-fac029cedbd9-9&btsid=0b8b15d416053556616857552eadec&ws_ab_test=searchweb0_0,searchweb201602_,searchweb 201603_)

sdima1357
14.11.2020, 15:47
stm32f407vet6 +3.2 ILI9341 ~$20
или
https://aliexpress.ru/item/4001004816900.html $8
а также любой
stm32f407vgt6

+ практически любой 320х240 or 480x320 8 bit .
480х320 c линейной интерполяцией . Некоторые скроллеры будут выглядеть мерцающими.

https://aliexpress.ru/item/33006472329.html $8
https://aliexpress.ru/item/32730403582.html $3 - нужен паяльник . Диоды подсветки включены напрямую к 3.3. Ну и другие ардуины лсд аналогично.

Есть вариант кода под 800х480 16бит 3.95 инч . Это луший IPS display. И лучший и для CP/M и для спекки. Но чуть дороже.
https://aliexpress.ru/item/4001183423461.html

...
И чтобы USB работал как хост нужно удалить R21 с платы.

- - - Добавлено - - -


Да наверно какая-нить такая девборда по типу : Плата разработки STM32F407VET6, устройство для обучения, системная плата ARM Core 2,8/3,2 дюймов, ЖК-дисплей, модуль привода ILI9341, TFT-экран (https://aliexpress.ru/item/4000953664266.html?spm=a2g0o.productlist.0.0.3f747 cb8wEFGQq&algo_pvid=b837af34-a532-4555-b9b3-fac029cedbd9&algo_expid=b837af34-a532-4555-b9b3-fac029cedbd9-9&btsid=0b8b15d416053556616857552eadec&ws_ab_test=searchweb0_0,searchweb201602_,searchweb 201603_)

Точно. Лучше с 3.2. 2.8 мелковат.

tank-uk
15.11.2020, 15:16
Есть вариант кода под 800х480 16бит 3.95 инч . Это луший IPS display. И лучший и для CP/M и для спекки. Но чуть дороже.
https://aliexpress.ru/item/4001183423461.html
а где сказано что это IPS ? У продавца этого не указано, на lcdwiki от IPS ни каких упоминаний

sdima1357
15.11.2020, 15:51
а где сказано что это IPS ? У продавца этого не указано, на lcdwiki от IPS ни каких упоминаний

Да возможно перепутал(очень похожи фотки), вот правильные и явно написано что IPS:

https://aliexpress.ru/item/33036723474.html
и
https://aliexpress.ru/item/32807629460.html

Вот с вики(И посмотрите на фотки):
http://www.lcdwiki.com/3.97inch_16BIT_Module_OTM8009A_SKU:MRB3971
У всех путаница.(И в вики тоже) Смотрите там где написано [8 бит][16 бит] и [24 бит]а конфигурации. У меня там 3 строчки

У меня точно на OTM8009A:
readId1(DA) 40
readId2(DB) 00
readId3(DC) 00
и точно IPS(смотрите углы обзора):
https://github.com/sdima1357/spectrum128_cpm/blob/master/images/IMG_20201115_145457MP.jpg
https://github.com/sdima1357/spectrum128_cpm/blob/master/images/IMG_20201115_145526MP.jpg
https://github.com/sdima1357/spectrum128_cpm/blob/master/images/IMG_20201115_145546MP.jpg

A относительно этого:
https://aliexpress.ru/item/4001183423461.html
Наверное фотка ввела в заблуждение. Она точно как у моего дисплея.

Скарт
19.11.2020, 10:00
Здравствуйте!
А есть возможность выложить тут (или ещё где) скомпилированный бинарник для 8бит 320х240?
Я даже не могу представить с чего начать компилить (это вообще под какой системой надо делать?),
не говоря о том, что у меня наверняка не получится..
И распиновку не нашёл в сорсах :(
А 8-бит это fsmc(бывает ли такое?) или SPI?
Спасибо.

sdima1357
19.11.2020, 13:57
Здравствуйте!
А есть возможность выложить тут (или ещё где) скомпилированный бинарник для 8бит 320х240?
Я даже не могу представить с чего начать компилить (это вообще под какой системой надо делать?),
не говоря о том, что у меня наверняка не получится..
И распиновку не нашёл в сорсах :(
А 8-бит это fsmc(бывает ли такое?) или SPI?
Спасибо.

8 бит - это FSMC (parallel), можно и не через FSMC , а просто через GPIO, но FSMC быстрее
--reset
--ID=e30000
--LCD_init ok
--clear screen 5 ms


И да такие бывают , например:

https://aliexpress.ru/item/4000542706930.html
https://aliexpress.ru/item/4000080134562.html
https://aliexpress.ru/item/32895445316.html

SPI на этом контроллере (STM32f407) - 42мбит/с . Это очень мало (30 fps максимум а надо больше 50).
Распиновка в файле "spectrum128_cpm_8bit.ioc". Это файл STM Cube. Среда сборки SW4STM32: https://www.st.com/en/development-tools/sw4stm32.html

1. Я вечером (~23.30) выложу скомпилированную версию, но типов 320х240 очень много разных и китайских несовместимых копий тоже. И нужно настраивать LCD_setRotation под конкретный дисплей, а у меня есть только один тип 320х240 8 бит (и это не ILI9341 , а "совместимый")... Но можем попробовать в несколько итераций с Вашим.
2. Если это Arduino display , то нужно проверить как подключены диоды подсветки, китайцы любят подключать их напрямую. Это большой ток и можно спалить регулятор 3.3 v. Их надо разбирать и переделывать.
-------------------------------------------------
22.47
Вот тут: 8 bit 320x240
https://github.com/sdima1357/spectrum128_cpm_8bit/tree/main/Release
file spectrum128_cpm_8bit.hex

LCD_D0 PD14 //FSMC_D0
LCD_D1 PD15 //FSMC_D1
LCD_D2 PD0 //FSMC_D2
LCD_D3 PD1 //FSMC_D3
LCD_D4 PE7 //FSMC_D4
LCD_D5 PE8 //FSMC_D5
LCD_D6 PE9 //FSMC_D6
LCD_D7 PE10 //FSMC_D7

LCD_RS PD13 //A18
LCD_RD PD4 //NOE
LCD_WR PD5 //NWE
LCD_CS PD7 //NE1

LCD_RST PD8

SND_LEFT PA8
SND_RIGHT PA9


UART_TX PA2 -> 115200 8bit 1 stop no parity debug output
UART_RX PA3 <-

USB_DM PA11
USB_DP PA12


Собственно боард , не забудьте снять R21:
https://github.com/mcauser/BLACK_F407VE/blob/master/docs/STM32F407VET6_schematics.pdf

PS
Ра самом деле все несложно смотрите :

Детская плата STM32F407VET6 !!!! :) (распиновка нарисована)
https://aliexpress.ru/item/32618222721.html

Скарт
21.11.2020, 03:39
Спасибо за разъяснения!
У меня плата "stm32f407vet6 mini board".

Пол дня прострадал с ней. Всё в неё загружается, но ничего не стартует. Короче потом понял:
Китайцы поставили 25мГц кварц туда. Всю голову сломал. Переставил на 8 и всё запустилось. Почти.

На экране помехи, но видно чёрный экран сначала, ресет спектрума видно и в конце вот такое вот меню.
(Фотография перевёрнута, но можно понять, что это именно меню спектрума).

73990

- - - Добавлено - - -

Вот диагностика моего экрана. Первая программа:
d3 Read ID4
0
10010011
1000001

09 Read Display Status
10000100
1010011
100
0

Вторая:
tft.readID() finds: ID = 0x9341

Третья:
reg(0x0000) 00 00 ID: ILI9320, ILI9325, ILI9335, ...
reg(0x0004) 00 00 93 01 Manufacturer ID
reg(0x0009) 00 00 61 00 00 Status Register
reg(0x000A) 08 08 Get Powsr Mode
reg(0x000C) 66 66 Get Pixel Format
reg(0x0030) 00 00 00 00 00 PTLAR
reg(0x0033) 00 00 00 00 00 00 00 VSCRLDEF
reg(0x0061) 00 00 RDID1 HX8347-G
reg(0x0062) 00 00 RDID2 HX8347-G
reg(0x0063) 00 00 RDID3 HX8347-G
reg(0x0064) 00 00 RDID1 HX8347-A
reg(0x0065) 00 00 RDID2 HX8347-A
reg(0x0066) 00 00 RDID3 HX8347-A
reg(0x0067) 00 00 RDID Himax HX8347-A
reg(0x0070) 00 00 Panel Himax HX8347-A
reg(0x00A1) 00 FF 00 FF 00 RD_DDB SSD1963
reg(0x00B0) 00 00 RGB Interface Signal Control
reg(0x00B3) 00 00 00 00 00 Frame Memory
reg(0x00B4) 00 00 Frame Mode
reg(0x00B6) 00 00 00 00 00 Display Control
reg(0x00B7) 00 00 Entry Mode Set
reg(0x00BF) 00 00 00 00 00 00 ILI9481, HX8357-B
reg(0x00C0) 00 00 00 00 00 00 00 00 00 Panel Control
reg(0x00C1) 00 00 00 00 Display Timing
reg(0x00C5) 00 00 Frame Rate
reg(0x00C8) 00 00 00 00 00 00 00 00 00 00 00 00 00 GAMMA
reg(0x00CC) 00 00 Panel Control
reg(0x00D0) 40 40 01 40 Power Control
reg(0x00D1) 41 41 01 41 VCOM Control
reg(0x00D2) 40 40 01 Power Normal
reg(0x00D3) 00 00 93 41 ILI9341, ILI9488
reg(0x00D4) 41 41 01 41 Novatek
reg(0x00DA) 00 00 RDID1
reg(0x00DB) 93 93 RDID2
reg(0x00DC) 01 01 RDID3
reg(0x00E0) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 GAMMA-P
reg(0x00E1) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 GAMMA-N
reg(0x00EF) 00 00 00 00 00 00 ILI9327
reg(0x00F2) 00 00 00 00 00 00 00 00 00 00 00 00 Adjust Control 2
reg(0x00F6) 00 00 00 00 Interface Control

sdima1357
21.11.2020, 12:26
Доброго утра <Скарт>.
Проверьте что CS сигнал доходит (LCD_CS PD7). Не должно мельтешить. И можно посмотреть лог с ножки терминала?(UART_TX PA2 -> 115200 8bit 1 stop no parity debug output)
Вечером поменяю тиминги дисплея и выложу, может он просто не успевает. Может поставите себе среду сборки SW4STM32 ? Или могу сделать Макеfile для gсс(Напишите мне на почту sdima1357@gmail.com, вышлю зип с проектом).
Чем прошиваете?
И проверьте LEDы дисплея, не просаживают ли питание. Не должно быть такой картинки.

И куда идет провод RST на фотке вроде B14 а должно быть D8 ?

Скарт
21.11.2020, 17:42
Бокер :)

Контакты все точно крепки и правильны. rst на d8. Сто раз проверял в обоих направлениях.
hex шил и st-link и flashloader demonstator через pa9-pa10.
Поставил systemworkbench и даже получилось скомпилировать и зашить им же :)
Вот дебаг: (Пока что только экран подключён, без SD)
ÿ

System Start
HAL_RCC_GetHCLKFreq = 168000000
HAL_RCC_GetPCLK1Freq = 42000000
timers 15298
go reset
delay ok
writecomm ok
reset
ID=4000000
LCD_init ok
clear screen 5 ms
sd_state = 0
hsd.SdCard.BlockNbr=0
hsd.SdCard.BlockSize=0
hsd.SdCard.CardType=0
hsd.SdCard.CardVersion=0
hsd.SdCard.Class=0
hsd.SdCard.LogBlockNbr=0
hsd.SdCard.LogBlockSize=0
CardInfo size 0 MB
Read 1 blocks (bytes = 512) in 0 ms st = 1

00 00
01 00
02 00
03 00
EndPrint
tt=5 85 1 0 cnttt= 0
tt=5 20 1 0 cnttt= 0
tt=8 20 1 0 cnttt= 151
tt=9 20 1 0 cnttt= 149
tt=8 20 1 0 cnttt= 151
tt=8 20 1 0 cnttt= 149
tt=9 20 1 0 cnttt= 149
tt=8 20 1 0 cnttt= 149
tt=8 20 1 0 cnttt= 151
tt=9 20 1 0 cnttt= 149
tt=8 20 1 0 cnttt= 149


Экран действительно жрёт много, поэтому всю систему я питаю напрямую от ЛБП 3.3в без внутренних 5->3.3 конверторов.

Далее я анкоментил в inc\ili8341.h строки
#define ILI9341_HSYNC ((uint32_t)9) /* Horizontal synchronization */
#define ILI9341_HBP ((uint32_t)29) /* Horizontal back porch */
#define ILI9341_HFP ((uint32_t)2) /* Horizontal front porch */
#define ILI9341_VSYNC ((uint32_t)1) /* Vertical synchronization */
#define ILI9341_VBP ((uint32_t)3) /* Vertical back porch */
#define ILI9341_VFP ((uint32_t)2) /* Vertical front porch */
Но как бы я ни увеличивал ни на что не влияет. А в датащите на Himax HX8347-A в таймингах написано TBD только.
Или я не там меняю?
Но ведь решение где-то под носом...
Благодарю.

sdima1357
21.11.2020, 19:24
Бокер :)

Контакты все точно крепки и правильны. rst на d8. Сто раз проверял в обоих направлениях.
hex шил и st-link и flashloader demonstator через pa9-pa10.
Поставил systemworkbench и даже получилось скомпилировать и зашить им же :)
Вот дебаг: (Пока что только экран подключён, без SD)
ÿ

System Start
HAL_RCC_GetHCLKFreq = 168000000
HAL_RCC_GetPCLK1Freq = 42000000
timers 15298
go reset
delay ok
writecomm ok
reset
ID=4000000
LCD_init ok
clear screen 5 ms
sd_state = 0
hsd.SdCard.BlockNbr=0
hsd.SdCard.BlockSize=0
hsd.SdCard.CardType=0
hsd.SdCard.CardVersion=0
hsd.SdCard.Class=0
hsd.SdCard.LogBlockNbr=0
hsd.SdCard.LogBlockSize=0
CardInfo size 0 MB
Read 1 blocks (bytes = 512) in 0 ms st = 1

00 00
01 00
02 00
03 00
EndPrint
tt=5 85 1 0 cnttt= 0
tt=5 20 1 0 cnttt= 0
tt=8 20 1 0 cnttt= 151
tt=9 20 1 0 cnttt= 149
tt=8 20 1 0 cnttt= 151
tt=8 20 1 0 cnttt= 149
tt=9 20 1 0 cnttt= 149
tt=8 20 1 0 cnttt= 149
tt=8 20 1 0 cnttt= 151
tt=9 20 1 0 cnttt= 149
tt=8 20 1 0 cnttt= 149


Экран действительно жрёт много, поэтому всю систему я питаю напрямую от ЛБП 3.3в без внутренних 5->3.3 конверторов.

Далее я анкоментил в inc\ili8341.h строки
#define ILI9341_HSYNC ((uint32_t)9) /* Horizontal synchronization */
#define ILI9341_HBP ((uint32_t)29) /* Horizontal back porch */
#define ILI9341_HFP ((uint32_t)2) /* Horizontal front porch */
#define ILI9341_VSYNC ((uint32_t)1) /* Vertical synchronization */
#define ILI9341_VBP ((uint32_t)3) /* Vertical back porch */
#define ILI9341_VFP ((uint32_t)2) /* Vertical front porch */
Но как бы я ни увеличивал ни на что не влияет. А в датащите на Himax HX8347-A в таймингах написано TBD только.
Или я не там меняю?
Но ведь решение где-то под носом...
Благодарю.

Не это не те.
тимиги в main.c : MX_FSMC_Init . Лучше менять в MX plugin файл .ioc, но можно и прямо в коде(регенерация проекта из плагина переписывает этот код)

Timing.AddressSetupTime = 2; //2-4
Timing.AddressHoldTime = 15; //15-20
Timing.DataSetupTime = 7; //7-11
Timing.BusTurnAroundDuration = 0; //0-2
Timing.CLKDivision = 16;
Timing.DataLatency = 17;
Timing.AccessMode = FSMC_ACCESS_MODE_A;
/* ExtTiming */
ExtTiming.AddressSetupTime = 1; //1-3
ExtTiming.AddressHoldTime = 15; //15-20
ExtTiming.DataSetupTime = 3; //3-5
ExtTiming.BusTurnAroundDuration = 0; //0-2
ExtTiming.CLKDivision = 16;
ExtTiming.DataLatency = 17;
ExtTiming.AccessMode = FSMC_ACCESS_MODE_A;

И внимательно !!!!!!!!!!!!!!!!!!!
У Вас ведь вот это проект?
https://github.com/sdima1357/spectrum128_cpm_8bit

file ili9341.h : строка 107
define должен быть включен:


#define ILI9341


смущает в логе отсуствие реакции на ID=4000000 ?? . Должно быть ID=х0009341
У вас с ардуины он ответил:
reg(0x0004) 00 00 93 01 Manufacturer ID
Не знаю . похоже на тайминги FSMC . Или провода. Может какой из пинов у stm мертвый? Сигнал по всем пробегает?


20:00

Добавил фирменный 9341 с его таймингами.
reset
ID4=9341
ID=41000000
go reset
delay ok
writecomm ok
reset
ID4=9341
ID=41000000
ID1=0
ID2=0
ID3=0
LCD_init ok
clear screen 12 ms

Возьмите новый код c https://github.com/sdima1357/spectrum128_cpm_8bit
изменения в нескольких файлах
image:
https://github.com/sdima1357/spectrum128_cpm_8bit/blob/main/Images/IMG_20201121_203223.jpg

Скарт
21.11.2020, 23:26
Дааа!!! Заработало! Вы гений :) Буду разбираться далее. Спасибо огромное!
Чуть-чуть мерцает экран, потом разберусь подсветка это или не хватает fps.
И резистор сниму - клаву проверю.
Я так рад :)))))

sdima1357
22.11.2020, 00:16
Я так рад
Хм .. Я тоже :)
C экраном сложно.На некоторых платках можно вычислить дорожку ледов
, перерезать и вставить резистор. Должно быть ,для 2.4 где то <100 ма. На некоторых надо отдирать аккуратно дисплей и отпаивать шлейф ледов.
Короче проще купить нормальный 16 бит 3.2 дисплей. На моей плате есть транзистор подключенный к ШИМ управлению яркостью. В коде на 16 бит все это есть. Сейчас пытаюсь написать чтение и запись с физическим магнитофоном

Скарт
22.11.2020, 01:28
Клава заработала тоже!!!
Дело в экране, что я бы вообще поставил 2.2" если бы fsmc был. Мне как можно меньше - лучше.
У меня и боард, как вы заметили, тоже маленький очень.
Сей час я могу запитать всё это 3мя вольтами (вместо 3.3) и тогда ток 150. Из которых подсветка - 50. Странно, но ЦП и экран без подсветки берут аж 100мА!
Куда идёт такой огромный ток - не понимаю. ЦП не нагревается ни на градус относительно окружающей среды, экран тоже.
При 3.3в это всё жрёт запредельные 230мА.
Надо поднимать экран и ставить резистор. Ерунда. Это всё сделаю и глазом не моргну.
Теперь надо сосредоточиться на супер-мини маленькой клавиатуре.
И моя мечта сделать нано-спектрум лэптоп, с вашей прошивкой и неоценимой помощью, становится всё ближе!! :)

sdima1357
22.11.2020, 01:47
Клава заработала тоже!!!
Дело в экране, что я бы вообще поставил 2.2" если бы fsmc был. Мне как можно меньше - лучше.
..
Теперь надо сосредоточиться на супер-мини маленькой клавиатуре.
И моя мечта сделать нано-спектрум лэптоп, с вашей прошивкой и неоценимой помощью, становится всё ближе!! :)

2.2 будет очень мелко в режиме CP/M.(80х25) . А Вашего экрана можно выкинуть плату и припаять на свою,покомпактней. И клавиатуру можно и самому спаять, мне просто лень. Ножек свободных у STM-ки осталось много, можно сканировать вручную и обойтись и без USB клавиатуры(ей нужно точно 48 MHz) Тогда можно поднять клок и прицепить SPI display.Я прицеплял 1.3 spi (240х240)(https://aliexpress.ru/item/32994026323.html). Он тормознутый, надо рисовать через фрейм. Но прикольно. И с клавиш пожно было подвинуть на одну знакопозицию влево вправо (256-240=16 пикселей- те. одна слева одна справа) . Ну очень маленький. Для большинства игр нормально но читать плохо. Могу Вам перемапировать SD на SPI , тот что на экране сзади. ЦП и будет жрать много, он такой, прожорливый.Надо посмотреть что можно отключить.И по схеме посмотреть, может там кто лишний есть. Клавиатуре на USB лучше дать 5 V, у меня на 3 иногда не запускается.

А еще можно запустить тач (надо запускать АЦП для этого экрана) и прицепить джойстик. Тогда для игр можно обойтись и без клавиатуры.

И все таки круто у Вас получилось. За пару дней повторили и практически в железе. Я думал будет больше проблем. То есть конструкция повторяемая и недорогая.

Скарт
22.11.2020, 21:41
Клавиатуру буду сам собирать. Готовые слишком большие. Пока подумываю взять от motorola droid 4.
Столкнулся с глюком - у меня звук только с PA9 идёт, PA8 - глухо.
Теоретически, возможно, у меня пробило этот пин. У вас звук с обоих?

Скарт
22.11.2020, 23:47
А нет. Проверил в ардуине оба вывода в порядке. И PA8 и PA9 нормально функционируют.
А вот в эмуляторе звук только через PA9..

sdima1357
23.11.2020, 00:18
Так и задумано. Это я с магнитофоном играю. fuller - выход пина динамика fullerT - выход пина магнитофона. amp - выход AY8910
в двух местах в файле smain.c(2 вызова строки 1276 и 1279 ).

вот так :
push_pair(fuller+amp+MAX_VOLUME/2,fullerT+amp+MAX_VOLUME/2);

первый параметр - левый канал , второй правый. Если поставить например:
push_pair(fuller+MAX_VOLUME/2,fuller+MAX_VOLUME/2);
будет чистый динамик
а вот так:
push_pair(amp+MAX_VOLUME/2,amp+MAX_VOLUME/2);
только ay-3 - 8910



push_pair вызывается в двух местах. В цикле и в хвосте цикла. Менять надо в обоих. Один (правый)канал на PA8 , другой на (левый)PA9 . Или наоборот.

То есть в текущем коде вызовите save program tape из байсика услышите второй пин. Или mp3 - тогда оба. Или что то на AY3-8910.

Скарт
24.11.2020, 02:29
Поменял обе строки на push_pair(fuller+amp+MAX_VOLUME/2,fuller+amp+MAX_VOLUME/2);
Но ситуация не изменилась :( Очень странно... Ещё страннее что МР3 тоже не работает на PA8.
Боюсь мне надо remap делать на другой таймер.

sdima1357
24.11.2020, 17:03
Поменял обе строки на push_pair(fuller+amp+MAX_VOLUME/2,fuller+amp+MAX_VOLUME/2);
Но ситуация не изменилась :( Очень странно... Ещё страннее что МР3 тоже не работает на PA8.
Боюсь мне надо remap делать на другой таймер.

Никогда такого глюка не видел 8)

Я бы подебажил
1 В фунции коллбеков конца DMA - TIM1_TC1( ) и TIM1_TC2() положил бы счетчики:

volatile int tc2_cnt = 0;
void TIM1_TC2()
{
tc2_cnt++;
}

В main loop раз в секунду их бы напечатал. (Собсвенно проверка глюков компилятора) и проверка наличия обработчиков DMA.


2. Написал бы коротенький тест с фиксированнм значением в PWM таймера и посмотрел бы на скопе.

3. Ничего не помогло - перенес бы второй канал на timer 1 chanel 3. Нужно правильно зарезервировать дма в кубе для этого канала , добавить обработчики в файле xxxf4_it.c и инитиализоровать в main.c

PS
Можно еще смапировать прямо из куба TIM1_CH2 вместо ножки A9 на ножку E11(В кубе, левой кнопкой мышки, прямо на ножке е11)и регенерация проекта, без ручных изменений в коде

Скарт
25.11.2020, 03:13
Эх. Но проблема с tim1_ch1 - это pa8, а его можно только перемапить на pe9, который нельзя освободить: fsmc_d6.

Плата всего 13$ стоит.. За одно и узнаю выбит ли пин у моей или другой глюк.
Вот, нашёл клавиатурку за то.
https://www.lindy.co.uk/images/keyboard-wireless-micro-keyboard-mouse-usb-p770-1200_zoom.jpg
Осталось отыскать где можно её купить..

tank-uk
25.11.2020, 08:29
Вот, нашёл клавиатурку за то.
а как на счет такой https://aliexpress.ru/item/33046368046.html?spm=a2g0s.9042311.0.0.264d33edsb1 qYV&_ga=2.42015717.1737590399.1606282005-1502693496.1576906014&_gac=1.49532244.1606131313.CjwKCAiA2O39BRBjEiwApB2 IkrVXZ-9f7eDOEf-nl0TATRU9GOtbUeCtVhiApmOxTfTPvqT6nDnVQxoCQe4QAvD_B wE
и вместо тач-пада дисплей

sdima1357
25.11.2020, 15:37
а как на счет такой https://aliexpress.ru/item/33046368046.html?spm=a2g0s.9042311.0.0.264d33edsb1 qYV&_ga=2.42015717.1737590399.1606282005-1502693496.1576906014&_gac=1.49532244.1606131313.CjwKCAiA2O39BRBjEiwApB2 IkrVXZ-9f7eDOEf-nl0TATRU9GOtbUeCtVhiApmOxTfTPvqT6nDnVQxoCQe4QAvD_B wE
и вместо тач-пада дисплей

Я ее расковыривал.
1 Дисплей не очень туда подходит. Там тач надо отрезать как то.
2 Подключиться к дорожкам сложно. И чип местный с шагом 0.5мм кажется(или миллиметр, забыл, но вроде LQFP48 7 × 7 mm). Могу фотку выложить вечером,когда домой вернусь. Проще сделать новый PCB под эту резинку.

- - - Добавлено - - -


Эх. Но проблема с tim1_ch1 - это pa8, а его можно только перемапить на pe9, который нельзя освободить: fsmc_d6.

Плата всего 13$ стоит.. За одно и узнаю выбит ли пин у моей или другой глюк.
Вот, нашёл клавиатурку за то.
https://www.lindy.co.uk/images/keyboard-wireless-micro-keyboard-mouse-usb-p770-1200_zoom.jpg
Осталось отыскать где можно её купить..

Вот у этого - задняя сторона плоская. https://www.aliexpress.com/item/1005001620646654.html
Я на него добавлял PSRAM 8MB $1-$0.6 (https://www.aliexpress.com/item/4000242457828.html) вместо флешки W25Q16. И у меня на ней работает.

tank-uk
26.11.2020, 08:54
Могу фотку выложить вечером,когда домой вернусь.
то что внутри я знаю, просто можно в этот корпус плату развести и будет портативный спек

sdima1357
26.11.2020, 15:42
то что внутри я знаю, просто можно в этот корпус плату развести и будет портативный спек

Чуток не хватает , даже пoд самый маленький 2.2 дисплей(тут размеры):
См (Ш x В x Г) (мм): 40.10x55.20x2.35
Активная площадь (мм): 33.84x45.12

https://aliexpress.ru/item/32986647929.html

видимая область влезает точно , а целиком дисплей - никак :(

tank-uk
27.11.2020, 08:51
Чуток не хватает
тогда вот https://aliexpress.ru/item/32956487265.html?spm=a2g0o.detail.1000013.7.fba422 bew1cIl5&gps-id=pcDetailBottomMoreThisSeller&scm=1007.13339.169870.0&scm_id=1007.13339.169870.0&scm-url=1007.13339.169870.0&pvid=be283162-9e1f-4e62-9c86-c2727237c2c9&_t=gps-id:pcDetailBottomMoreThisSeller,scm-url:1007.13339.169870.0,pvid:be283162-9e1f-4e62-9c86-c2727237c2c9,tpp_buckets:21387%230%23183380%230&_ga=2.112907140.1617177763.1606456121-1502693496.1576906014&_gac=1.258049528.1606131313.CjwKCAiA2O39BRBjEiwApB 2IkrVXZ-9f7eDOEf-nl0TATRU9GOtbUeCtVhiApmOxTfTPvqT6nDnVQxoCQe4QAvD_B wE

sdima1357
27.11.2020, 11:59
Это не брутально. Надо так :)
https://aliexpress.ru/item/4000300623596.html

tank-uk
27.11.2020, 12:13
Надо так
после ввода LOAD"" Enter пальцы в "травму" поедут :)

sdima1357
27.11.2020, 15:03
после ввода LOAD"" Enter пальцы в "травму" поедут :)

Есть вот это , для защиты пальцев:
https://aliexpress.ru/item/4000244495932.html

Впрочем с ними можно использовать плату и без кнопок, чистый PCB ,и не нужен пассворд:)

BTW нашел дисплей IPS STP240320_0200A
30.6mmx51mm 8bit

https://aliexpress.ru/item/4000469644849.html

occamlab
02.12.2020, 13:45
sdima1357, вопрос по клавиатуре, существуют простые/дешевые способы подключить bluetooth клавиатуру к МК?

sdima1357
02.12.2020, 13:59
sdima1357, вопрос по клавиатуре, существуют простые/дешевые способы подключить bluetooth клавиатуру к МК?

$2

HC-05 - здесь не уверен , надо почитать (upd - да может как мастер https://3d-diy.ru/wiki/arduino-moduli/bluetooth-modul-hc-05/)
https://www.aliexpress.com/item/1005001621899428.html
Внимательней:, ! HC-06 - не подходит ,он только slave

$3

nRF52832 -и родственники (integrated arm)
https://www.aliexpress.com/item/1005001297824156.html

$4

ESP32 явный оверкил :) (integrated mips)
https://www.aliexpress.com/item/4001204183286.html

Это если без паяльника

Если с паяльником то зависит от тиража. Есть stm32wbXXXX серия

occamlab
02.12.2020, 14:41
боюсь все не так просто, HC-05 - пишут что поддерживает только "профиль сериал" а клавиатура HID. Был уверен, что ESP32 подойдет, но готовых примеров не нашел :-(

sdima1357
02.12.2020, 14:47
боюсь все не так просто, HC-05 - пишут что поддерживает только "профиль сериал" а клавиатура HID. Был уверен, что ESP32 подойдет, но готовых примеров не нашел :-(
Вот эти точно могут и много примеров:
The Central HIDS sample demonstrates how to use the GATT Human Interface Device (HID) Service Client to interact with a HIDS server. Basically, the sample simulates a computer that connects to a mouse or a keyboard.
https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/samples/bluetooth/central_hids/README.html

Я сам не пробовал, но пошел бы на нордиксеми.С документацией у них все в порядке. Не китайцы.

$3

nRF52832 -и родственники (integrated arm)
https://www.aliexpress.com/item/1005001297824156.html

ну или какой нибудь USB dongle

Скарт
21.02.2021, 01:03
Наконец-то пришла новая платка stm32. Но с ней полная дичь творится :(
Заливаю стандартный blink - вместо одной секунды мигает точно 10 сек.
Всё работает ровно в 10 раз медленнее. Не в 8 раз, не в 12. 10!
И готовый хекс шил и компилировал. И через st-link и через uart шил.
Придётся опять ждать пока новая плата приедет :(

Иногда, после прошивки blink работает правильно, но только до первого ресета..
Блин :v2_dizzy_fear:

HardWareMan
21.02.2021, 07:27
Да, да. Слышали. Чувак тоже купил девборду с STшкой а она то не заводится, то мигает не по частоте. И вообще ведёт себя странно. А когда я ему по удалёнке помог, оказалось, что китайцы фьюзами (байт опций) поставили вотчдог (или тупо БУ контроллер). Написал мелкий код по разблокировке и клиент счастлив. Может ты просто их не умеешь готовить? Или это просто не твоё, эти все STM32?

Скарт
21.02.2021, 21:07
Конечно я сразу подумал про байты эти. Но в STM32 ST-LINK Utility всё фьюзы серые и, более того, среди серых нет отвечающих за клокер.
До этого такие же борды (точно такие же) работали сразу без танцев.
В программе эмулятора (темы) все частоты и плл и прочее прописано. Я думал готовый хекс выходит уже сконфигурированный.
А как убедиться что HSE включён и активен? Без j-linkов всяких там и скопов на такие частоты :(, только с st-link.
Спасибо.

HardWareMan
21.02.2021, 21:53
Скарт, опции доступны только из приложения. Программатору доступа к ним нет. А если стоит RDP2 то и приложению не доступно.

Тактирование настраивается в приложении. Т.е., там блокировки нет. Байты опций это про другое. Но даже с RDP1 можно вернуть контроллер к жизни.

Скарт
21.02.2021, 22:41
ООО класс. Спасибо! Пересобрал в кубеМХ - заработало!!! Но проблема самая изначальная осталась!
PA9 - есть звук, PA8 - нет.
Значит дело было не в первом контроллере.
Тут я уже, как говорится, всё :) Это точно выше меня.
У обоих не идёт звук на РА8.
Теперь надо чтоб кто-то ещё попробовал.
Хотя у Димы работает...

sdima1357
22.02.2021, 00:37
ООО класс. Спасибо! Пересобрал в кубеМХ - заработало!!! Но проблема самая изначальная осталась!
PA9 - есть звук, PA8 - нет.
Значит дело было не в первом контроллере.
Тут я уже, как говорится, всё :) Это точно выше меня.
У обоих не идёт звук на РА8.
Теперь надо чтоб кто-то ещё попробовал.
Хотя у Димы работает...

Куб генерит main.c main.h. Пришлите мне их, я посмотрю, когда смогу. (Сейчас пишу soft LS USB Host <мышка клава> )ногодрыгом на ESP32 ) ... на sdima1357@gmail.com

HardWareMan
22.02.2021, 06:23
ООО класс. Спасибо! Пересобрал в кубеМХ - заработало!!!
А, так это у тебя разный номинал кварца на девборде отличается от такового в схеме под которую был собран исходный хекс. Пересборка с корректировкой нужных констант правильное решение.

Скарт
29.06.2021, 22:48
Здравствуйте!
В общем, затянулись эксперименты, зато есть результаты.
Самое простое: pa8 в этих маленьких платах завязан на детект СД карточки. При карте внутри замыкается на землю.
Кварцы: После кучи заказанных плат разных конфигураций и 8мГц кварцев - нужны какие-то выдающиеся кварцы, если 25 стоит и надо 8. Проверю с активными.
Одна плата из 4 заработала, но с кварцем из какой-то камеры сони до динозавров. С кучи заказанных кварцев результат один: проц не заводится и падает на
внутренний генератор - типа 8мгц или типа того. (Исходный хекс для проверки генератора компилирован автором под 8мГц, не мной)


Точно есть проблема: tap файлы грузятся с одинаковой скоростью, независимо от ф11-ф12. (при ф12 - только звук выше. скорость та же). Проверял секундомером :-E
Чего очень не хватает: Кроме скорости tap хотелось бы, конечно, trdos. Или поддержки других типов файлов. Ну, или на конец, хотя бы какую тупую возможность
сохраняться на карту. Заменить меню "save game" на save snapshot, например (ну и код гыгы).

Батарейка сей-час 2.1Ач. Жрёт примерно 200-300мА. Зависит от звука. Очень много звук берёт. Без звука совсем 100мА.
Вся штука, толщиной 17мм, включает ВСЁ кроме клавы. Конвертер любое-в-3.3в, динамики, усилитель.
54х78х17мм, много часов работы.
При этом, запуская демку и отключая клаву, можно дальше наслаждаться, держа в руке :)

Вот. Далее я заказал кнопки для клавы, т.к. купить готовую нереально. Не те, дурацкие кнопки о коих вы подумали.
Настоящие, плавные, силиконовые кнопочки с достаточной площадкой под настоящие наклейки. При этом 6х6мм всего.


Но пока девайс таков. Скоро разберу и буду переделывать с клавой.

Спасибо за прочтение ;)

75723757227572475725757267572775728

А, отдельное спасибо за удобную раскладку клавы, типа бекспейса, курсорных стрелок... спасибо!

sdima1357
22.09.2021, 21:59
Жрёт примерно 200-300мА. Зависит от звука. Очень много звук берёт. Без звука совсем 100мА.

Звук надо через конденсатор. Там в среднем половина питания на выходе(PWM). Поэтому нужна развязка. Он не должен много жрать, махимум 10-20 mA

Скарт
16.01.2022, 01:37
Звук ладно.
Руки добрались - сделал маленькую USB клаву для этого спектрума на atmega32u4. В винде прекрасно работает.
А вот в стм32 этом не определяется.

Хост не инициализирует клаву и одна не стартует (не сканирует матрицу кнопок).

Может кто знает причину? pid vid брал от микрософтовской клавы. Которая работает.
Делал по очень распространенному проекту tmk_keyboard. Там все делают кастомные клавы.
https://github.com/tmk/tmk_keyboard

Сорри. Разобрался сам. Скоро сделаю.

Скарт
06.02.2022, 00:05
Вы думали ничего не сделаю? Хо-хо.

76977

Теперь самое сложное трафарет пальмреста вырезать.

Размер в закрытом состоянии 89х60х22мм (Да!, сцхнх! Я маленький!).

Звук, конечно через кондей, камон! Дело в этих pam840x. Они сами мало жрут, но стоит поставить динамики (8ом 1вт) = 40ма. Как звук пошёл - до ста.
Сей-час кушает 200. Будет 300. Батарейка на 380мАч. Максимум что осталось под размер. На фотке без аудио.
Клава оказалась изумительно юзабельной для такого размера. 90+% места забито.

Потом выложу подробно где что как.

Скарт
13.03.2022, 01:04
Пока так. Но межкнопочную решётку буду менять.
Чёрную плёнку, что волнами пошла :(
И пробел не доделан.
77118
77117
Но уже выглядит вполне.

Наклейки тоже временные. Чтоб понять о чём речь.

Скарт
11.08.2022, 23:49
Бампну. Что уж там.
Готово на 98%. Разработал технологию (бесплатную практически) деланья из картинки на принтере достаточно жёсткой (очень) конструкции :) 2D 3d печать) лол.
Печать трафарета, вырезание ножом, и несколько проходов спреевой краской. Чёрной. Матовой. Вот и вся технология, гы.
Хотя делание кучи трафаретов не так смешно ) И что на это ушли месяцы тоже.... don't ask why.
Но смотрите результат!
77676
Это значительно лучше первого.
Кнопки пришлось сточить. 0.2мм на дороге не того...(да, каждую надо разбирать) Наклейки опять же не лягут ровно на кружки.
В общем скоро будет почти полное описание страданий. Фотки и видос.
""""""""""""""""""Огромное спасибо Диме!!! Без него бы не получилось)!!!!""""""""""""""""""""""""""""""""""

*Хотите отдельную тему про все эти страдания? От и до могу рассказать, но это не повторить даже мне :(

Ну и повторюсь, это полностью рабочий qwerty спектрум 128) микро лаптоп. Ширина 9см. Полностью. Со всеми кучами нажимаемых крутых кнопок стерео колонками итд))
Kempston там..
Вроде как на максимуме нагрузки 40мин работы... Есть кто много жрёт.

**Пробел будет офигенным!