www.kn34pc.com

Форум на силистренските радиолюбители
Дата и час: 20 Юни 2025, 02:24

Часовете са според зоната UTC + 2 часа




Напиши нова тема Отговори на тема  [ 5 мнения ] 
Автор Съобщение
 Заглавие: CH32
МнениеПубликувано на: 17 Сеп 2024, 13:36 
Offline
Аватар

Регистриран на: 07 Дек 2006, 17:24
Мнения: 1582
Местоположение: Силистра
CH32 през Arduino IDE
https://github.com/openwch/arduino_core_ch32?tab=readme-ov-file

URL text box link:
https://github.com/openwch/board_manager_files/raw/main/package_ch32v_index.json

добавяне: платка: CH32 -> изтегляне
към Arduino IDE v2.3.2, win10 64bit

Пример: микроконтролер CH32V003J4M6
Прикачени файлове:
CH32V003J4M6.jpg
CH32V003J4M6.jpg [ 138.35 KiB | Прегледано 567 пъти ]

Blink към извод PC4 / pin_7:
Код за потвърждение:
// CH32V003J4M6
//                          _____
// OSCI/URX/A1/PA1/A6/PD6 -|  ^  |- PD4/PD5/PD1/A7/A5/UTX/SWIO
//                    VSS -|     |- PC4/A2/MCO
//            OSCO/A0/PA2 -|     |- PC2/SCL
//                    VDD -|_____|- PC1/SDA

void setup() {
  pinMode(PC4, OUTPUT);
}

void loop() {
  digitalWrite(PC4, HIGH);
  delay(100);
  digitalWrite(PC4, LOW);
  delay(100);
}

Захранване: на 3,3V, на 5V :super
Flash: 16 kB , RAM: 2 kB
HSI 48 MHz
цена: примерно 30 ст. за брой :smt041

Програмиране: през 1 проводник чрез WCH-LinkE програматор.

Недостaтък през Arduino IDE виждам в използването на много памет:
Sketch uses 10380 bytes (63%) of program storage space. Maximum is 16384 bytes.
Global variables use 512 bytes (25%) of dynamic memory, leaving 1536 bytes for local variables. Maximum is 2048 bytes.
---
През MounRiver Studio за blink на същия извод използваната Flash е примерно 7 пъти по-малко:
Код за потвърждение:
14:43:37 **** Build of configuration obj for project ch32v003j4m6_blink ****
make -j4 all
   text      data       bss       dec       hex   filename
   1192        24       264      1480       5c8   ch32v003j4m6_blink.elf

14:43:39 Build Finished. 0 errors, 0 warnings. (took 1s.608ms)


Върнете се в началото
 Профил  
 
 Заглавие: Re: CH32
МнениеПубликувано на: 19 Яну 2025, 14:00 
Offline
Аватар

Регистриран на: 07 Дек 2006, 17:24
Мнения: 1582
Местоположение: Силистра
USB към CH32V203C8T6: USB кабел, в WCHISPStudio 3 клика на мишката и blink.hex се записа в микроконтролера. LED мига.
При включване на модула трябва да се задържи бутона BOOT0.


Прикачени файлове:
wchispst.jpg
wchispst.jpg [ 171.63 KiB | Прегледано 282 пъти ]
ch32v203c8t6_blink.zip [8.06 KiB]
16 пъти
Върнете се в началото
 Профил  
 
 Заглавие: Re: CH32
МнениеПубликувано на: 07 Юни 2025, 06:58 
Offline
Аватар

Регистриран на: 07 Дек 2006, 17:24
Мнения: 1582
Местоположение: Силистра
Заета памет от кода за конкретна конструкция, компилация при 3 нива на оптимизация /от налични 8/. Допада ми на какво е способно.

Optimization level: None(-O0)
Код за потвърждение:
   text      data       bss       dec       hex   filename
  11632       472       284     12388      3064   ch32v003j4m6.elf

Optimization level: Optimize fast(-Ofast)
Код за потвърждение:
   text      data       bss       dec       hex   filename
   8688       472       284      9444      24e4   ch32v003j4m6.elf

Optimization level: Optimize size(-Os)
Код за потвърждение:
   text      data       bss       dec       hex   filename
   6352       472       284      7108      1bc4   ch32v003j4m6.elf


Върнете се в началото
 Профил  
 
 Заглавие: Re: CH32
МнениеПубликувано на: 07 Юни 2025, 17:00 
Offline
Аватар

Регистриран на: 07 Дек 2006, 17:24
Мнения: 1582
Местоположение: Силистра
като негатив: в CH32V003 PLL е само с коефициент *2 (не може да се оувърклокне).
Консумацията на ток при това не е висока: Idd ~ 7,5 mA (кварц 24 MHz -> PLL 48 MHz)
Максимално възможната честота по входа ETR TIM1 с прескалер /8 е достатъчно висока, напр. 150 MHz.

И нямат 32 битов таймер (има 1 само CH32V203RB?).


Прикачени файлове:
pll_v003.jpg
pll_v003.jpg [ 53.78 KiB | Прегледано 23 пъти ]
Върнете се в началото
 Профил  
 
 Заглавие: Re: CH32
МнениеПубликувано на: 09 Юни 2025, 19:28 
Offline
Аватар

Регистриран на: 07 Дек 2006, 17:24
Мнения: 1582
Местоположение: Силистра
Преместване на изводи/функции в CH32V (Alternate Function Remapping): TIM1_ETR от pin_5 -> на pin_8. Необходима е документацията на чипа и файла ch32v00x_gpio.c. Направили са го всичк ос един ред. Просто и бързо (даже ми изглежда повече подредено, отколкото за STM32 в STM32Cube).
Код за потвърждение:
 * @fn      GPIO_PinRemapConfig
 *
 * @brief   Changes the mapping of the specified pin.
 *
 * @param   GPIO_Remap - selects the pin to remap.
 *            GPIO_Remap_SPI1 - SPI1 Alternate Function mapping
 *            GPIO_PartialRemap_I2C1 - I2C1 Partial Alternate Function mapping
 *            GPIO_FullRemap_I2C1 - I2C1 Full Alternate Function mapping
 *            GPIO_PartialRemap1_USART1 - USART1 Partial1 Alternate Function mapping
 *            GPIO_PartialRemap2_USART1 - USART1 Partial2 Alternate Function mapping
 *            GPIO_FullRemap_USART1 - USART1 Full Alternate Function mapping
 *            GPIO_PartialRemap1_TIM1 - TIM1 Partial1 Alternate Function mapping
 *            GPIO_PartialRemap2_TIM1 - TIM1 Partial2 Alternate Function mapping
 *            GPIO_FullRemap_TIM1 - TIM1 Full Alternate Function mapping
 *            GPIO_PartialRemap1_TIM2 - TIM2 Partial1 Alternate Function mapping
 *            GPIO_PartialRemap2_TIM2 - TIM2 Partial2 Alternate Function mapping
 *            GPIO_FullRemap_TIM2 - TIM2 Full Alternate Function mapping
 *            GPIO_Remap_PA1_2 - PA1_2 Alternate Function mapping
 *            GPIO_Remap_ADC1_ETRGINJ - ADC1 External Trigger Injected Conversion remapping
 *            GPIO_Remap_ADC1_ETRGREG - ADC1 External Trigger Regular Conversion remapping
 *            GPIO_Remap_LSI_CAL - LSI calibration Alternate Function mapping
 *            GPIO_Remap_SDI_Disable - SDI Disabled
 *          NewState - ENABLE or DISABLE.
 *
 * @return  none
 */
void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState) ...

Код за потвърждение:
  // CH32V003J4M6 -> TIM1_RM = 00 Default mapping PC5, pin_5
  // RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 | RCC_APB2Periph_GPIOC, ENABLE);

  // CH32V003J4M6 -> TIM1_RM = 10 Partial mapping, PD4, pin_8
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 | RCC_APB2Periph_GPIOD, ENABLE);
  GPIO_PinRemapConfig(GPIO_PartialRemap2_TIM1, ENABLE);

CH32V003J4M6 се записва през pin_8, както ие и вход на таймера TIM1_ETR (за частотомер). Конфликт няма (даже не е необходимо превключване за запис/тестване).

За себе си намерих "10 центовия" 32-битов микроконтроллер като пълна замяна на ATtiny13A/PIC12F675, като има и "много повече ресурси и фуккции в корпуса си.


Прикачени файлове:
rm.jpg
rm.jpg [ 147.89 KiB | Прегледано 15 пъти ]
Върнете се в началото
 Профил  
 
Покажи мненията от миналия:  Сортирай по  
Напиши нова тема Отговори на тема  [ 5 мнения ] 

Часовете са според зоната UTC + 2 часа


Кой е на линия

Потребители, разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
cron
Форумът се задвижва от phpBB® Forum Software © phpBB Group
Преведено от yarnaudov.com