0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

标签 > ch582

ch582

+关注 0人关注

CH582为RISCV架构的32位微处理器,集成开发环境使用基于Eclipse的MounRiver集成开发环境,官方为CH582提供了标准的库函数,位于“。/EVT/EXAM/SRC”。

文章: 1
浏览: 1090
帖子: 173

ch582简介

  CH582集成BLE无线通讯的32位RISC-V内核微控制器。片上集成2Mbps低功耗蓝牙BLE通讯模块、2个全速USB主机和设备控制器及收发器、2个SPI、4个串口、ADC、触摸按键检测模块、RTC等丰富的外设资源。

  CH582为RISCV架构的32位微处理器,集成开发环境使用基于Eclipse的MounRiver集成开发环境,官方为CH582提供了标准的库函数,位于“。/EVT/EXAM/SRC”。

  接下来聚焦提供的标准库和TRM。

  连接命令文件和系统存储资源

  按照官方给的器件手册,该开发板应当包含4段Flash区域,但是连接命令文件中仅仅启用了两个,即RAM(32k),和FLASH(448k),这些资源足够应付绝大多数的应用场景。另外两个没有写明在连接命令文件中的项目分为为:

  24KB 系统引导程序存储区BootLoader

  8KB系统非易失配置信息存储区InfoFlash

  如果需要使用则需要在连接命令文件中添加如下代码:

  MEMORY

  {

  BOOT (rx) : ORIGIN = 0x00078000, LENGTH = 24K

  INFO (rw) : ORIGIN = 0x0007E000, LENGTH = 8K

  }

  ​

  SECTIONS

  {

  .bootloader :

  {

  KEEP(*(SORT_NONE(.bootloader)))

  。 = ALIGN(4);

  } 》BOOT AT》BOOT

  .infoflash :

  {

  。 = ALIGN(4);

  } 》INFO AT》INFO

  }

  在C语言代码中如果需要使用则需要告诉链接器,需要保存的段,需要使用下面的声明方法:

  __attribute__((section(“.bootloader”))) // 用来修饰需要保存在BootLoader段的代码和数据

  __attribute__((section(“.infoflash”))) // 用来修饰需要保存在InfoFlash段的数据

  这些代码保留待用。后面的具体实现过程中可能需要。

  另外在连接命令文件中提供了一些常量,将来可能供汇编代码使用。(可以看完下一节之后看这里,_highcode_vma_start常量等都是通过直接在这里通过PROVIDE关键字导出的)。

  另外我们需要关注到,通过“用户级非易失配置信息”配置可以使能bootloader。在使能之后才会默认从bootloader段代码开始执行。

  CFG_BOOT_EN = 1; // 使能BootLoader

  片上外设也分配了相应的地址,但是在连接命令文件中并没有分配相应的存储空间,这与我平时使用ti公司的相关DSP产品实现方式不同。可以从源代码中找到实现,以TMR0为例,我们可以找到下面的代码:

  #define R32_TMR0_CONTROL (*((volatile unsigned long)0x40002000)) // RW, TMR0 control

  可以看到源代码中也是通过直接使用volatile关键字实现对于特定外设进行配置的,但是并没有在连接命令文件中写明,也就是直接使用了宏模式,而不是使用连接命令文件绑定的变量模式。

  评注:我在最开始学习TI-DSP的时候,也是通过volatile关键字直接绑定地址空间的方式来直接对外设的配置寄存器直接实现读写的。这种方法上手快,容易理解。但是TI选择使用绑定某一个外设变量和一段地址空间这种实现方式的优势在于DSP将特定的外设的一组寄存器编址在一起,可以容易地通过结构体实现访问。

  初始化启动代码

  接下来可以找到初始化启动代码“startup_CH583.S”,可以简单粗略地观察一下其中的布置。都是熟悉的配方,下面通过伪代码简单概括一下框架,然后逐个详细分析。

  _start: // .init

  jmp _handle_reset

  _vector_base: // .vector

  // 这里写明了所有的中断类型

  // 为所有的中断函数声明了weak标识符修饰的函数

  handle_reset: // .handle_reset

  // 构建堆栈框架

  // 将必要的代码、数据地址加载到寄存器中,

  // 初始化全局变量段

  // 启用芯片功能:流水线控制位 & 动态预测控制位;打开嵌套中断、硬件压栈功能; 配置向量表模式为绝对地址模式

  // 将程序的控制权交给main函数

  la t0, main

  csrw mepc, t0

  mret

  与其他类型的芯片启动过程相似。如果有其他朋友需要研究其中的内容,可以仔细分析一下连接命令文件,其中提供了各类代码的加载地址。

  评注:简单,明快,清晰,值得学习。

  汇编-C接口

  如果考虑仔细研究芯片的具体性能和芯片的一些具体实现,就需要关注RVMSIS文件夹中的两个文件。两个文件都提供了一些封装好的汇编语句,方便用户直接调用从而实现对于特定功能的使能、关闭、检测。

  在core_riscv.h中提供了一系列的内联函数,主要是针对PFIC(Programmable Fast Interrupt Controller)的相关设置,东西比较细碎,不做更深入的阅读,用到再说,直接继续。

  标准外设库

  接下来到最关键也是作为用户最应关注的部分——外设库。接下来将逐步分析芯片具有的各类外设。

  首先是片上总硬件资源汇总:2Mbps 低功耗蓝牙BLE 通讯模块、2 个全速USB主机和设备控制器及收发器、2 个SPI、4 个串口(UART)、1个I2C接口、1个12位14通道(实际写在代码中可以外界相连的数目,不包括2个内部通道)ADC、14通道的触摸按键检测模块、RTC、电源控制器。

  接下来从外设库和提供手册的角度分析各个外设的使用方法和特性。

  GPIO

  芯片一共提供了40个IO口,其中GPIOA16个,GPIOB24个,其中GPIOB中16个通道具有输入中断功能,其他8个不具备输入中断功能。

  要访问GPIO的输入输出数据需要借助引脚输入寄存器:R32_Px_PIN和引脚输出寄存器R32_Px_OUT,作为GPIO使用时,需要首先借助R32_Px_DIR寄存器写入GPIO的方向。以上的寄存器是通过位来表征每一个IO口的输入情况的。

  PA 端口中

查看详情

相关标签

相关话题

换一批
  • 华大半导体
    华大半导体
    +关注
    华大半导体有限公司于2014年5月8日在自贸区市场监督管理局登记成立。法定代表人董浩然,公司经营范围包括集成电路产品的研究、开发和销售,电子元器件等。
  • HoloLens
    HoloLens
    +关注
    HoloLens是微软公司开发的一种MR头显 (混合现实头戴式显示器)。该产品于北京时间2015年1月22日凌晨发布。Microsoft HoloLens MR头显由Microsoft 公司于北京时间2015年1月22日凌晨与Window10同时发布。
  • 3D视觉
    3D视觉
    +关注
    2017年起至今苹果一直推崇基于3D传感技术的Face ID,由此实现安全快捷的3D面部识别,可极大提升验证和支付等环节的便利性。为了实现3D传感与全面屏的完美融合,OPPO Find X采用的是全隐藏式3D摄像头模组
  • VR头显
    VR头显
    +关注
  • tpk
    tpk
    +关注
  • 欧菲光
    欧菲光
    +关注
    欧菲光集团股份有限公司(简称“欧菲光”)正式运营始于2002年,2010年在深交所上市,股票代码为002456。公司的主营业务为智能手机、智能汽车及新领域业务,主营业务产品包括光学影像模组、光学镜头、微电子及智能汽车相关产品等,广泛应用于以智能手机、平板电脑、个人电脑、可穿戴设备等为代表的消费电子和智能汽车领域。
  • 触控感测
    触控感测
    +关注
    触感触控是个可接收触头(无论是手指或胶笔尖等)等输入信号的感应式液晶显示设备,当接触了屏幕上的图形按钮时,屏幕上的触觉反馈系统可根据预先编程的程序驱动各种连结设备,可用以取代机械式的按钮皮肤,并借由液晶显示画面制造出生动的影音效果。
  • RealSense
    RealSense
    +关注
  • 萤石
    萤石
    +关注
  • VIVE
    VIVE
    +关注
    HTC Vive 是由HTC与Valve联合开发的一款VR头显(虚拟现实头戴式显示器)产品,于2015年3月在MWC2015上发布。由于有Valve的SteamVR提供的技术支持,因此在Steam平台上已经可以体验利用Vive功能的虚拟现实游戏。
  • Oculus Rift
    Oculus Rift
    +关注
    Oculus Rift它是一款专门为电子游戏设计的头戴式显示器,这款虚拟现实设备在未来很可能改变人们的游戏方式。
  • Zytronic
    Zytronic
    +关注
  • Gear VR
    Gear VR
    +关注
    Gear VR又名三星Gear VR,是三星推出的一款vr头显(虚拟现实头戴式显示器)。三星将这款初代产品命名为“创新者版”,软件和游戏部分很多都是技术演示,而不是消费类的产品。
  • 压感触控
    压感触控
    +关注
  • 雷蛇
    雷蛇
    +关注
    雷蛇(Razer)是游戏设备品牌之一,1998年由CEO Min-Liang Tan和Robert “Razerguy” Krakoff创立于美国加州圣地亚哥。在上世纪90年代中叶,随着网络游戏和竞技型第一人称射击 (FPS) 游戏的兴起,游戏玩家发现传统外围设备在游戏中使用起来性能不足。
  • 敦泰
    敦泰
    +关注
  • 电容触控技术
    电容触控技术
    +关注
  • 奥宝科技
    奥宝科技
    +关注
  • 触觉反馈
    触觉反馈
    +关注
  • TouchGFX
    TouchGFX
    +关注
  • 触控感应
    触控感应
    +关注
  • PCAP
    PCAP
    +关注
  • faceid
    faceid
    +关注
  • 感应技术
    感应技术
    +关注
  • 触控传感器
    触控传感器
    +关注
  • 刷脸支付
    刷脸支付
    +关注
    刷脸支付是基于人工智能、机器视觉、3D传感、大数据等技术实现的新型支付方式,具备更便捷、更安全、体验好等优势。数据显示,2018年中国移动支付用户规模达6.59亿人,市场规模已高达277.4万亿元;2019年移动支付用户规模将突破7.33亿人,2020年有望增至7.90亿人,且仍在高速增长。
  • 眼球识别
    眼球识别
    +关注
  • 屏幕指纹
    屏幕指纹
    +关注
    手指接触屏幕时,OLED屏幕发出的光线穿透盖板将指纹纹理照亮,指纹反射光线穿透屏幕返回传感器,最终形成指纹图像来进行识别。
  • 触觉技术
    触觉技术
    +关注
  • 全景相机
    全景相机
    +关注

关注此标签的用户(0人)

编辑推荐厂商产品技术软件/工具OS/语言教程专题

电机控制 DSP 氮化镓 功率放大器 ChatGPT 自动驾驶 TI 瑞萨电子
BLDC PLC 碳化硅 二极管 OpenAI 元宇宙 安森美 ADI
无刷电机 FOC IGBT 逆变器 文心一言 5G 英飞凌 罗姆
直流电机 PID MOSFET 传感器 人工智能 物联网 NXP 赛灵思
步进电机 SPWM 充电桩 IPM 机器视觉 无人机 三菱电机 ST
伺服电机 SVPWM 光伏发电 UPS AR 智能电网 国民技术 Microchip
瑞萨 沁恒股份 全志 国民技术 瑞芯微 兆易创新 芯海科技 Altium
德州仪器 Vishay Micron Skyworks AMS TAIYOYUDEN 纳芯微 HARTING
adi Cypress Littelfuse Avago FTDI Cirrus LogIC Intersil Qualcomm
st Murata Panasonic Altera Bourns 矽力杰 Samtec 扬兴科技
microchip TDK Rohm Silicon Labs 圣邦微电子 安费诺工业 ixys Isocom Compo
安森美 DIODES Nidec Intel EPSON 乐鑫 Realtek ERNI电子
TE Connectivity Toshiba OMRON Sensirion Broadcom Semtech 旺宏 英飞凌
Nexperia Lattice KEMET 顺络电子 霍尼韦尔 pulse ISSI NXP
Xilinx 广濑电机 金升阳 君耀电子 聚洵 Liteon 新洁能 Maxim
MPS 亿光 Exar 菲尼克斯 CUI WIZnet Molex Yageo
Samsung 风华高科 WINBOND 长晶科技 晶导微电子 上海贝岭 KOA Echelon
Coilcraft LRC trinamic
放大器 运算放大器 差动放大器 电流感应放大器 比较器 仪表放大器 可变增益放大器 隔离放大器
时钟 时钟振荡器 时钟发生器 时钟缓冲器 定时器 寄存器 实时时钟 PWM 调制器
视频放大器 功率放大器 频率转换器 扬声器放大器 音频转换器 音频开关 音频接口 音频编解码器
模数转换器 数模转换器 数字电位器 触摸屏控制器 AFE ADC DAC 电源管理
线性稳压器 LDO 开关稳压器 DC/DC 降压转换器 电源模块 MOSFET IGBT
振荡器 谐振器 滤波器 电容器 电感器 电阻器 二极管 晶体管
变送器 传感器 解析器 编码器 陀螺仪 加速计 温度传感器 压力传感器
电机驱动器 步进驱动器 TWS BLDC 无刷直流驱动器 湿度传感器 光学传感器 图像传感器
数字隔离器 ESD 保护 收发器 桥接器 多路复用器 氮化镓 PFC 数字电源
开关电源 步进电机 无线充电 LabVIEW EMC PLC OLED 单片机
5G m2m DSP MCU ASIC CPU ROM DRAM
NB-IoT LoRa Zigbee NFC 蓝牙 RFID Wi-Fi SIGFOX
Type-C USB 以太网 仿真器 RISC RAM 寄存器 GPU
语音识别 万用表 CPLD 耦合 电路仿真 电容滤波 保护电路 看门狗
CAN CSI DSI DVI Ethernet HDMI I2C RS-485
SDI nas DMA HomeKit 阈值电压 UART 机器学习 TensorFlow
Arduino BeagleBone 树莓派 STM32 MSP430 EFM32 ARM mbed EDA
示波器 LPC imx8 PSoC Altium Designer Allegro Mentor Pads
OrCAD Cadence AutoCAD 华秋DFM Keil MATLAB MPLAB Quartus
C++ Java Python JavaScript node.js RISC-V verilog Tensorflow
Android iOS linux RTOS FreeRTOS LiteOS RT-THread uCOS
DuerOS Brillo Windows11 HarmonyOS
林超文PCB设计:PADS教程,PADS视频教程 郑振宇老师:Altium Designer教程,Altium Designer视频教程
张飞实战电子视频教程 朱有鹏老师:海思HI3518e教程,HI3518e视频教程
李增老师:信号完整性教程,高速电路仿真教程 华为鸿蒙系统教程,HarmonyOS视频教程
赛盛:EMC设计教程,EMC视频教程 杜洋老师:STM32教程,STM32视频教程
唐佐林:c语言基础教程,c语言基础视频教程 张飞:BUCK电源教程,BUCK电源视频教程
正点原子:FPGA教程,FPGA视频教程 韦东山老师:嵌入式教程,嵌入式视频教程
张先凤老师:C语言基础视频教程 许孝刚老师:Modbus通讯视频教程
王振涛老师:NB-IoT开发视频教程 Mill老师:FPGA教程,Zynq视频教程
C语言视频教程 RK3566芯片资料合集
朱有鹏老师:U-Boot源码分析视频教程 开源硬件专题