Софтварный пакет для микроконтрольеров CM32M4xxR от компании Xingchen Technology, включающий соответствующие драйверы, примеры кода для плат CM32M4xxR_LQFP128_STB и CM32M433R, а также техническую документацию по чипам и программному обеспечению.
CM32M4xxR — это первый микроконтрольер с микропроцессором RISC-V (ядра Nuclei N308) от компании Xingchen Technology. Поддерживает FPU и DSP инструкции, тактовая частота до 144 МГц, максимальный объём Flash памяти составляет 512 КБ.
Drivers: Драйверы для микроконтрольера, включая NMSIS и драйверы периферийных устройств.
Project: BSP, образцы кода и шаблоны проектов для плат CM32M4xxR_LQFP128_STB и CM32M433R-START.
Doc: Включает в себя руководства пользователя, технические документы по программному и аппаратурному обеспечению, принципы работы плат и другие технические материалы.Образцы кода включают следующие компоненты:
Пример проекта | Функциональное описание |
---|---|
├─ADC | |
│ ├─4ADCs_DMA | Пример преобразования с использованием DMA, непрерывной конвертации и программного триггера для четырёх каналов (Пример преобразования с использованием DMA, непрерывной конвертации и программного триггера для четырёх каналов) |
│ ├─ADC1_DMA | Пример преобразования с использованием DMA, непрерывной конвертации, режима сканирования и программного триггера для одного канала (Пример преобразования с использованием DMA, непрерывной конвертации, режима сканирования и программного триггера для одного канала) |
│ ├─ADC1_TEMP | Пример преобразования напряжения внутреннего температурного датчика ADC1 в значение температуры (Пример преобразования напряжения внутреннего температурного датчика ADC1 в значение температуры) |
│ ├─ADC_SingleRead | Пример одиночного чтения данных с четырёх каналов при программном триггере (Пример одиночного чтения данных с четырёх каналов при программном триггере) |
│ ├─AnalogWatchdog | Пример использования функции аналогового сторожевого устройства (Пример использования функции аналогового сторожевого устройства) |
│ ├─ExtLinesTrigger | Пример преобразования ADC1 с использованием DMA, режима сканирования и внешнего триггера (Пример преобразования ADC1 с использованием DMA, режима сканирования и внешнего триггера) |
│ ├─RegSimul_DualMode | Пример преобразования двух синхронизированных каналов ADC1 и ADC2 с использованием DMA, режима сканирования и программного триггера (Пример преобразования двух синхронизированных каналов ADC1 и ADC2 с использованием DMA, режима сканирования и программного триггера) |
│ ├─TIMTrigger_AutoInjection | Пример преобразования ADC1 с использованием TIM1CC2 для автоматической инъекции данных при программном триггере (Пример преобразования ADC1 с использованием TIM1CC2 для автоматической инъекции данных при программном триггере) |
│ └─HighSpeed_5M | Пример высокоскоростного преобразования ADC с частотой дискретизации 5 МГц и разрешением 12 бит (Пример высокоскоростного преобразования ADC с частотой дискретизации 5 МГц и разрешением 12 бит) |
| ├─ALGO | | | │ ├─AES | Пример шифрования и расшифрования данных в режимах AESECB/CBC/CTR (Пример шифрования и расшифрования данных в режимах AESECB/CBC/CTR) | | │ ├─DES | Пример шифрования и расшифрования данных в режимах DES/3DESECB/CBC (Пример шифрования и расшифрования данных в режимах DES/3DESECB/CBC) | | │ ├─HASH | Пример вычисления хешей MD5/SHA1/SHA224/SHA256 (Пример вычисления хешей MD5/SHA1/SHA224/SHA256) | | │ └─SM4 | Пример шифрования и расшифрования данных в режимах SM4 ECB/CBC (Пример шифрования и расшифрования данных в режимах SM4 ECB/CBC) |
| ├─BKP | | | │ ├─BkpData | Пример записи данных в регистры резервного питания (Пример записи данных в регистры резервного питания) | | │ └─TamperTest | Пример тестирования защиты от вторжения (Пример тестирования защиты от вторжения) |
| ├─bxCAN | | | │ ├─Dual_CAN1_2 | Пример передачи и приема сообщений между двумя каналами CAN (Пример передачи и приема сообщений между двумя каналами CAN) | | │ └─LoopBack_CAN1 | Пример приема и отправки сообщений в режиме обратной связи для одного канала CAN (Пример приема и отправки сообщений в режиме обратной связи для одного канала CAN) |
| ├─COMP | | | │ ├─CompBreak | Пример триггерного события COMP, которое активирует таймер после изменения выходного сигнала (Пример триггерного события COMP, которое активирует таймер после изменения выходного сигнала) | | │ ├─CompOut | Пример триггерного события COMP, которое вызывает изменение выходного сигнала при входном триггере (Пример триггерного события COMP, которое вызывает изменение выходного сигнала при входном триггере) | | │ ├─CompINT | Пример триггерного события COMP, которое вызывает прерывание при внешнем триггере (Пример триггерного события COMP, которое вызывает прерывание при внешнем триггере) | | │ ├─ComptoOCREFCLR | Пример триггерного события COMP, которое активирует захват таймера при изменении выходного сигнала (Пример триггерного события COMP, которое активирует захват таймера при изменении выходного сигнала) | | │ └─ComptoTimer | Пример управления выходным сигналом PWM с помощью компаратора COMP (Пример управления выходным сигналом PWM с помощью компаратора COMP) |
| ├─CRC | | | │ └─CalCRC | Пример базовых функций и алгоритмов CRC (Пример базовых функций и алгоритмов CRC) |
| ├─DAC | | | │ ├─DoubleModeDMASineWave| Пример генерации синусоидального сигнала с использованием DMA для двух каналов при одновременной активации (Пример генерации синусоидального сигнала с использованием DMA для двух каналов при одновременной активации) | | │ ├─OneChannelOutputNoiseWave| Пример генерации шума на одном канале (Пример генерации шума на одном канале) | | │ └─TwoChannelsTriangleWave| Пример генерации треугольного сигнала на двух каналах (Пример генерации треугольного сигнала на двух каналах) |
| ├─DMA | | | │ ├─FLASH_RAM | Пример передачи данных между FLASH и RAM с использованием DMA (Пример передачи данных между FLASH и RAM с использованием DMA) | | │ ├─I2C_RAM | Пример передачи данных между I2C-устройством и RAM с использованием DMA (Пример передачи данных между I2C-устройством и RAM с использованием DMA) | | │ └─SPI_RAM | Пример передачи данных между SPI-устройством и RAM с использованием DMA (Пример передачи данных между SPI-устройством и RAM с использованием DMA) |
| ├─EXTI | | | │ └─KeyInterrupt | Пример триггерного события EXTI при нажатии кнопки (Пример триггерного события EXTI при нажатии кнопки) |
| ├─Flash | | | │ ├─Flash_DMA_Program| Пример записи данных SRAM в FLASH с использованием DMA (Пример записи данных SRAM в FLASH с использованием DMA) | | │ ├─Flash_Program | Пример чтения и записи данных в FLASH (Пример чтения и записи данных в FLASH) | | │ ├─Flash_Write_Protection| Пример защиты FLASH от записи (Пример защиты FLASH от записи) | | │ ├─Flash_Read_Protection| Пример защиты FLASH от чтения (Пример защиты FLASH от чтения) | | │ └─Flash_EEPROM | Пример использования FLASH как EEPROM (Пример использования FLASH как EEPROM) |
| ├─GPIO | | | │ ├─IORemap | Пример переопределения JTAG-портов в обычные GPIO-порты (Пример переопределения JTAG-портов в обычные GPIO-порты) | | │ └─LedBlink | Пример управления светодиодом через порт GPIOK (Пример управления светодиодом через порт GPIOK) |
| ├─I2C | | | │ ├─EEPROM | Пример чтения и записи данных EEPROM через I2C (Пример чтения и записи данных EEPROM через I2C) | | │ ├─I2C_10bit | Пример работы I2C с адресами 10 бит (Пример работы I2C с адресами 10 бит) | | │ ├─I2C_Master | Пример работы I2C в качестве мастера (через запрос) (Пример работы I2C в качестве мастера (через запрос)) | | │ ├─I2C_Master_Int | Пример работы I2C в качестве мастера (через прерывания) (Пример работы I2C в качестве мастера (через прерывания)) | | │ ├─I2C_Master_Slave_Int| Пример работы I2C в качестве мастера и слейва (через прерывания) (Пример работы I2C в качестве мастера и слейва (через прерывания)) | | │ ├─I2C_Slave | Пример работы I2C в качестве слейва (через запрос) (Пример работы I2C в качестве слейва (через запрос)) | | │ └─I2C_Slave_Int | Пример работы I2C в качестве слейва (через прерывания) (Пример работы I2C в качестве слейва (через прерывания)) |
| ├─I2S | | | │ ├─I2S_DMA | Пример передачи данных через I2S с использованием DMA (Пример передачи данных через I2S с использованием DMA) | | │ ├─I2S_Interrupt | Пример передачи данных через I2S с использованием прерываний (Пример передачи данных через I2S с использованием прерываний) | | │ ├─SPI_I2S_Switch | Пример переключения между I2S и SPI для передачи данных (Пример переключения между I2S и SPI для передачи данных) | | │ └─I2S_Voice | Пример воспроизведения аудио через I2S с использованием внешней декодировки (Пример воспроизведения аудио через I2S с использованием внешней декодировки) |
| ├─iCache | | | │ └─CoreMark | Пример тестирования производительности процессора CoreMark (Пример тестирования производительности процессора CoreMark) |
| ├─IWDG | | | │ └─IWDG_Reset | Пример использования функции сброса IWDG (Пример использования функции сброса IWDG) |
| ├─OPA | | | │ ├─OpaAdByTim | Пример триггерного события OPA, которое активирует преобразование ADC при событии TIM и управляет выводом PWM через COMP (Пример триггерного события OPA, которое активирует преобразование ADC при событии TIM и управляет выводом PWM через COMP) | | │ ├- Импорт SDK: Откройте Nuclei Studio IDE, выберите меню RV-Tools -> Nuclei Package Management, чтобы открыть окно управления пакетами. Затем импортируйте архив SDK "CMIOT.CM32M4xxR_Library.zip". Обратите внимание, что архив должен быть в формате ZIP. После завершения импорта окно управления пакетами покажет информацию о пакете sdk-cm32m4xxr, как показано ниже:
Заполните имя проекта самостоятельно. Поскольку разработочные платы предлагают множество примеров проектов, вы можете использовать ключевые слова для фильтрации. Выберите ключевое слово GPIO для фильтрации, затем выберите проект, связанный с GPIO, в разделе Project Example. Оставьте остальные параметры по умолчанию. Нажмите кнопку Finish, чтобы завершить создание проекта.
Выберите меню Run -> Debug Configurations, чтобы открыть конфигурацию отладки. Примерные проекты уже имеют настроенные конфигурации отладки, поэтому вам не придется ничего изменять. Вам просто нужно выбрать подходящую конфигурацию отладки. Проекты, импортированные через NPK, имеют три конфигурации отладки, которые поддерживают Jlink, Hummingbird и CM-Link. Убедитесь, что ваша разработочная плата правильно подключена к источнику питания и отладчику. Затем нажмите кнопку Debug Configurations, выберите соответствующую конфигурацию отладки и нажмите кнопку Debug, чтобы запустить отладку проекта.
Отладочное окно состоит из нескольких частей: 1) панели управления отладкой; 2) окна Registers, которое позволяет просматривать значения регистров RISC-V; 3) окна Peripherals, которое позволяет просматривать значения регистров различных внешних устройств микроконтроллера. Эти окна можно найти и открыть через меню Windows -> Show View. Другие возможности, такие как просмотр переменных и управление точками останова, не рассматриваются здесь подробнее.
Нажмите кнопку запуска на панели управления отладкой, затем запустите выполнение программы. Вы сможете наблюдать мигание трех светодиодов на разработочной плате.
Каждый пример проекта имеет прилагаемый файл readme.txt, который содержит описание функциональности проекта, методы его использования и важные замечания. Рекомендуется внимательно прочитать этот файл.
Xinsheng Technologies Co., Ltd. была зарегистрирована 29 декабря 2020 года как дочерняя компания Zhongyi Yuntuogong Limited. В рамках программы реформирования "Демонстрационное действие" группы компаний China Mobile, Xinsheng Technologies сосредоточилась на развитии национальных чипов IoT, стремясь возродить отрасль интегральных схем. Под девизом "Создание новых технологий для соединения всего мира, ускорение цифровизации общества", компания стремится стать лидером в области IoT-чипов и приложений.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )