1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/CMIOT-XinShengTech-CMIOT.CM32M4xxR_Library

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

CMIOT.CM32M4xxR_Library

Софтварный пакет для микроконтрольеров CM32M4xxR от компании Xingchen Technology, включающий соответствующие драйверы, примеры кода для плат CM32M4xxR_LQFP128_STB и CM32M433R, а также техническую документацию по чипам и программному обеспечению.

CM32M4xxR

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, как показано ниже:

  • Создание проекта: Закройте окно управления пакетами, затем выберите меню File -> New -> New Nuclei RISC-V C/C++ Project, чтобы открыть окно создания проекта. В левой части окна указаны модели разработочных плат, вы можете выбрать одну из них в зависимости от ваших потребностей. В правой части окна представлены ссылки на техническую документацию, включая руководства по эксплуатации микросхем, программное обеспечение, руководства по эксплуатации разработочных плат и принципы работы. Нажмите кнопку Next, чтобы продолжить создание проекта.

Заполните имя проекта самостоятельно. Поскольку разработочные платы предлагают множество примеров проектов, вы можете использовать ключевые слова для фильтрации. Выберите ключевое слово GPIO для фильтрации, затем выберите проект, связанный с GPIO, в разделе Project Example. Оставьте остальные параметры по умолчанию. Нажмите кнопку Finish, чтобы завершить создание проекта.

  • Компиляция и отладка: Выберите меню Project -> Build All для компиляции проекта. После успешной компиляции будет отображена следующая информация:

Выберите меню Run -> Debug Configurations, чтобы открыть конфигурацию отладки. Примерные проекты уже имеют настроенные конфигурации отладки, поэтому вам не придется ничего изменять. Вам просто нужно выбрать подходящую конфигурацию отладки. Проекты, импортированные через NPK, имеют три конфигурации отладки, которые поддерживают Jlink, Hummingbird и CM-Link. Убедитесь, что ваша разработочная плата правильно подключена к источнику питания и отладчику. Затем нажмите кнопку Debug Configurations, выберите соответствующую конфигурацию отладки и нажмите кнопку Debug, чтобы запустить отладку проекта.

Отладочное окно состоит из нескольких частей: 1) панели управления отладкой; 2) окна Registers, которое позволяет просматривать значения регистров RISC-V; 3) окна Peripherals, которое позволяет просматривать значения регистров различных внешних устройств микроконтроллера. Эти окна можно найти и открыть через меню Windows -> Show View. Другие возможности, такие как просмотр переменных и управление точками останова, не рассматриваются здесь подробнее.

Нажмите кнопку запуска на панели управления отладкой, затем запустите выполнение программы. Вы сможете наблюдать мигание трех светодиодов на разработочной плате.

Каждый пример проекта имеет прилагаемый файл readme.txt, который содержит описание функциональности проекта, методы его использования и важные замечания. Рекомендуется внимательно прочитать этот файл.

  • Загрузка: IDE Nuclei Studio не имеет отдельной кнопки для загрузки. Во время процесса отладки IDE автоматически загружает программу на указанный адрес в соответствии с конфигурацией файла. Чтобы загрузить программу в flash, выберите файл gcc_cm32m4xxr_flashxip.ld в окне конфигурации сборки и установите значение макро DOWNLOAD_MODE равным 0.

Xinsheng Technologies Co., Ltd.

Xinsheng Technologies Co., Ltd. была зарегистрирована 29 декабря 2020 года как дочерняя компания Zhongyi Yuntuogong Limited. В рамках программы реформирования "Демонстрационное действие" группы компаний China Mobile, Xinsheng Technologies сосредоточилась на развитии национальных чипов IoT, стремясь возродить отрасль интегральных схем. Под девизом "Создание новых технологий для соединения всего мира, ускорение цифровизации общества", компания стремится стать лидером в области IoT-чипов и приложений.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

XinSheng Tech CM32M4xxR MCU Software Development Kit Развернуть Свернуть
C и 4 других языков
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/CMIOT-XinShengTech-CMIOT.CM32M4xxR_Library.git
git@api.gitlife.ru:oschina-mirror/CMIOT-XinShengTech-CMIOT.CM32M4xxR_Library.git
oschina-mirror
CMIOT-XinShengTech-CMIOT.CM32M4xxR_Library
CMIOT-XinShengTech-CMIOT.CM32M4xxR_Library
main