24 SEMC相关

news2025/1/17 13:52:06

文章目录

  • 24.1 SEMC 简介
  • 24.2 SEMC 框图剖析
    • 24.2.1 通讯引脚
      • 24.2.1.1 SEMC 的片选信号
      • 24.2.1.2 数据选通信号 DQS
    • 24.2.2 存储器控制器
    • 24.2.3 IP 命令和 AXI 命令
    • 24.2.4 驱动时钟
  • 24.4 SEMC 初始化配置结构体
    • 24.4.1 dqsMode
    • 24.4.2 cmdTimeoutCycles
    • 24.4.3 busTimeoutCycles
    • 24.4.4 queueWeight

24.1 SEMC 简介

RT10529使用SEMC外设来管理扩展的存储器,SEMC是Smart External Memory Controller的缩写,译为智能的外部存储控制器。

  • 可以用于驱动包括 SRAM、SDRAM、NorFlash、NAND Flash 等类型的存储器以及使用 8080 接口协议(DBI 接口)的显示器和设备。
  • SEMC 支持使用 8、16 位的方式访问 SDRAM,最多支持控制 4 个 SDRAM 存储器,每个 SDRAM存储器最大容量为 512Mb(64MByte),支持使用 ARM 内核的 AXI 接口控制SDRAM。

24.2 SEMC 框图剖析

在这里插入图片描述

24.2.1 通讯引脚

右侧显示的是 SEMC 与外部多种类型存储设备的连接

  • 地址线 SEMC_ADDR 和数据线 SEMC_DA 是所有控制器都共用的

24.2.1.1 SEMC 的片选信号

SEMC 外设把 SDRAM 的控制分成了 Region#0/1/2/3 四个区域

  • 控制时每个区域有一个对应的片选信号 CS0/1/2/3
  • 每个区域可以连接到一个外部 SDRAM 存储器进行控制
  • 当触发访问到某区域时,与之对应的片选信号会使能与其连接的 SDRAM

RT1052 提供了可软件定制信号的引脚 SEMC_CSX0/1/2/3,它们中的任意一个引脚都可以“变形”成 CS1/2/3 中的任意一个信号

  • CS0 片选信号只能使用 SEMC_CS0 引脚

在这里插入图片描述

24.2.1.2 数据选通信号 DQS

在 RT1052 中包含一个数据选通信号 SEMC_DQS,它是 DDR 类型的 SDRAM 中才有的信号

  • 功能主要用来在一个时钟周期内准确地区分出每个传输周期,并便于接收方准确接收数据。
  • 它是双向的,在写入时它用来传送由主控芯片发来的 DQS 信号,读取时,则由 SDRAM 芯片生成 DQS向主控发送,完全可以说,它就是数据的同步信号。

RT1052 不支持驱动 DDR 类型的 SDRAM

  • 设计硬件时,必须使 RT1052 的这个 SEMC_DQS 引脚悬空
  • 在软件配置方面必须开启该引脚的 SION 功能
  • 而且要把 SEMC的模块控制寄存器 MCR[DQSMD] 位置 1,即配置为使用 DQS 引脚的读选通信号

24.2.2 存储器控制器

SEMC 外设内部包含有 SDRAM/NOR/SRAM/NAND/8080 设备使用的不同控制器

  • 不同的控制器有专用的寄存器用于配置其工作模式。

例如配置 SEMC 通用控制的寄存器主要有 MCR、IOCR、BMCR0/1、IPCR0/1/2、IPCMD 以及 IP-TXDAT/IPRXDAT;

  • SDRAM 专用的控制寄存器的为 BR0/1/2/3 以及 SDRAMCR0/1/2/3;
  • NAND的专用控制寄存器为 BR4/8 以及 NANDCR0/1/2/3。

24.2.3 IP 命令和 AXI 命令

使用 FlexSPI 外设时,有 IP 命令和 AHB 命令两种方式,SEMC 外设也类似,它支持使用 IP 命令和 AXI 命令控制外部存储器。

  • 其中 AXI 是 Advanced eXtensible Interface 的缩写,这是 ARM 公司提出的 AMBA 协议的一部分,是一种高性能、高带宽、低延迟的片内总线。

24.2.4 驱动时钟

控制 SDRAM 时,SEMC的 SEMC_CLK 线的时钟信号是由 SEMC 根时钟 SEMC_CLK_ROOT 提供的
在这里插入图片描述

SEMC 根时钟有 3 个可选输入来源:

  • PLL2 PFD2:该时钟常规配置为 396MHz,为了 SDRAM 运行更稳定,本开发板把该时钟配置为 316.8MHz。
  • PLL3 PFD1:该时钟常规配置为 454.74MHz。
  • PERIPH CLK: 这 是 AHB_CLK_ROOT 的 时 钟 源,PERIPH CLK 分 频 后 得 到AHB_CLK_ROOT,SEMC 也可以使用这个时钟源

时钟源经过一个 3 位的分频器,它可对时钟进行 1~8 分频,分频后得到 SEMC 根时钟 SEMC_CLK_ROOT。

24.4 SEMC 初始化配置结构体

SEMC 配置结构体 semc_config_t

/*!
2 * @brief SEMC 配置结构体
3 * busTimeoutCycles: 当 busTimeoutCycles 设置为 0 时 , 总线的超时周期为
4 * 255*1024. 使用其它值时,总线周期为 busTimeoutCycles*1024
5 * cmdTimeoutCycles: 用于设置命令执行超时周期,与 busTimeoutCycles 类似
6 */
7 typedef struct _semc_config_t {
8 semc_dqs_mode_t dqsMode; /*!< Dummy 读选通模式 */
9 uint8_t cmdTimeoutCycles; /*!< 命令执行超时周期 */
10 uint8_t busTimeoutCycles; /*!< 总线超时周期 */
11 semc_axi_queueweight_t queueWeight; /*!< AXI queue weight. */
12 } semc_config_t;

24.4.1 dqsMode

寄存器位 MCR[DQSMD],它用于选择 DQS 的读选通模式

  • 可选值分别为使用内部回环的读选通信号(kSEMC_Loopbackinternal)和从 DQS 引脚得到的读选通信号(kSEMC_Loopbackdqspad)。
  • DQS 信号用于接收方更准确地接收数据,应用时需要把它设置成 kSEMC_Loopbackdqspad 才能以高频率的时钟访问 SDRAM

24.4.2 cmdTimeoutCycles

寄存器位 MCR[CTO],它用于设定命令执行超时周期

  • 当 SEMC 命令的执行时间超过该配置值时,可触发 IPCMDERR 和 AXICMDERR 中断。
  • 当此成员被赋值为 0 时,超时周期被配置为 2561024 个时钟周期,赋为其它值时被配置为 cmdTimeoutCycles1024。

24.4.3 busTimeoutCycles

寄存器位 MCR[BTO],它用于设定 AXI 总线超时周期

  • 当此成员被赋值为 0 时,超时周期被配置为 2551024 个时钟周期,赋为其它值时被配置为 busTimeoutCycles1024。

24.4.4 queueWeight

寄存器位 BMCR0/1,在 AXI 接口控制器中包含有 Queue A 和 Queue B 两个队列用来缓冲
AXI 访问触发的请求

  • queueWeight 就是用于定制 Queue A 和 Queue B 相关的权重配置,本成员本身也是一个结构体类型
1 /*! @brief SEMC AXI queue 权重配置 */
2 typedef struct _semc_axi_queueweight {
3 semc_queuea_weight_t *queueaWeight; /*!< queue a 的权重配置 */
4 semc_queueb_weight_t *queuebWeight; /*!< queue b 的权重配置 */
5 } semc_axi_queueweight_t;
6
7 /*! @brief SEMC AXI queue a 权重配置 */
8 typedef struct _semc_queuea_weight {
9 /*!< queue 0 的 qos 权重配置 */
10 uint32_t qos : 4;
11 /*!< queue 0 的 aging 权重配置 */
12 uint32_t aging : 4;
13 /*!< queue 0 的读 / 写切换( switch )权重配置 */
14 uint32_t slaveHitSwith : 8;
15 /*!< queue 0 的读 / 写无切换( no switch )权重配置 */
16 uint32_t slaveHitNoswitch : 8;
17 } semc_queuea_weight_t;
18
19 /*! @brief SEMC AXI queue b 权重配置 */
20 typedef struct _semc_queueb_weight {
21 /*!< queue 1 的 qos 权重配置 */
22 uint32_t qos : 4;
23 /*!< queue 1 的 aging 权重配置 */
24 uint32_t aging : 4;
25 /*!< queue 1 的读 / 写切换( switch )权重配置 */
26 uint32_t slaveHitSwith : 8;
27 /*!< queue 1 的页碰撞( page hit )权重配置 */
28 uint32_t weightPagehit : 8;
29 /*!< queue 1 的 bank 翻转 (bank rotation) 权重 */
30 uint32_t bankRotation : 8;
31 } semc_queueb_weight_t;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1442188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android开发 button 按钮点击两次 响应onclick方法

问题 Android开发 button 按钮点击两次 响应onclick方法 详细问题 笔者xml代码 <!-- 一个按钮 --> <Button android:id"id/button1" android:layout_width"wrap_conten…

排序算法的时间复杂度存在下界问题

对于几种常用的排序算法&#xff0c;无论是归并排序、快速排序、以及更加常见的冒泡排序等&#xff0c;这些排序算法的时间复杂度都是大于等于O(n*lg(n))的&#xff0c;而这些排序算法存在一个共同的行为&#xff0c;那就是这些算法在对元素进行排序的时候&#xff0c;都会进行…

imazing是啥?imazing有什么用

iMazing 是一款用于管理 iOS 设备的第三方软件。它支持在 Windows 或 Mac 电脑上对连接的 iPhone、iPad 或 iPod 进行数据传输、备份和管理工作。用户可以通过 iMazing 传输和备份包括照片、音乐、铃声、视频、电子书和通讯录等在内的多种信息。iMazing 的功能与苹果官方的 iTu…

C#上位机与三菱PLC的通信03--MC协议之A-1E报文解析

1、MC协议帧 MC协议可以在串口通信&#xff0c;也可以在以太网通信&#xff0c;有A-1E和Qna-3E两种模式&#xff0c;这两种都是三菱PLC通信协议中比较常用的两种&#xff0c;一般我们使用比较多的是以太网通信&#xff0c;对于FX5U系列/Q系列/Qna系列/L系列的PLC&#xff0c;…

求职|基于Springboot的校园求职招聘系统设计与实现(源码+数据库+文档)

校园求职招聘系统目录 目录 基于Springboot的校园求职招聘系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、企业信息管理 3、公告类型管理 4、公告信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选…

大型秒杀中如何减库存?JAVA 架构知识

目前来看&#xff0c;业务系统中最常见的就是预扣库存方案&#xff0c;像你在买机票、买电影票时&#xff0c;下单后一般都有个“有效付款时间”&#xff0c;超过这个时间订单自动释放&#xff0c;这都是典型的预扣库存方案。而具体到秒杀这个场景&#xff0c;应该采用哪种方案…

【MATLAB源码-第138期】基于matlab的D2D蜂窝通信仿真,对比启发式算法,最优化算法和随机算法的性能。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 D2D蜂窝通信介绍 D2D蜂窝通信允许在同一蜂窝网络覆盖区域内的终端设备直接相互通信&#xff0c;而无需数据经过基站或网络核心部分转发。这种通信模式具有几个显著优点&#xff1a;首先&#xff0c;它可以显著降低通信延迟&…

Springboot+vue的社区养老服务平台(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的社区养老服务平台&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的社区养老服务平台&#xff0c;采用M&#xff08;model&…

【初中生讲机器学习】6. 分类算法中常用的模型评价指标有哪些?here!

创建时间&#xff1a;2024-02-07 最后编辑时间&#xff1a;2024-02-09 作者&#xff1a;Geeker_LStar 你好呀~这里是 Geeker_LStar 的人工智能学习专栏&#xff0c;很高兴遇见你~ 我是 Geeker_LStar&#xff0c;一名初三学生&#xff0c;热爱计算机和数学&#xff0c;我们一起加…

c语言实现io多路复用(select),进程,线程并发服务器

io多路复用&#xff08;select&#xff09;代码 #include<myhead.h> #include <sys/select.h> #define PORT 8888 #define IP "192.168.250.100" int main(int argc, char const *argv[]) { //创建套接字int sfd socket(AF_INET, SOCK_STREAM, 0…

华为云账号注销之后账号下的域名丢了怎么办?记录一次域名转移权限的经历

背景 我之前在阿里云上买了个域名&#xff0c;有效期10年的&#xff0c;然后在2023年1月末转移到华为云了&#xff0c;交了一年的域名费用&#xff0c;买了一个一年的华为云服务器 一年之后&#xff0c;华为云的服务器也到期了&#xff0c;我就想着参加新用户计划&#xff0c…

Spring IoC容器详解

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 基本概念 Spring IoC容器是Spring框架的核心组件&#xff0c;它实现了控制反转&#xff08;Inversion of Control&#xff0c;IoC&#xff09;的设计原则。IoC是一种编程思…

计算一个时间序列中的元素属于一年中的第几季度

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 计算一个时间序列中的元素 属于这一年中的第几季度 Series.dt.quarter [太阳]选择题 以下代码的输出结果中正确的是? import pandas as pd ts pd.Series(pd.date_range("2024-02…

MFC实现遍历系统进程

今天我们来枚举系统中的进程和结束系统中进程。 认识几个API 1&#xff09;CreateToolhelp32Snapshot 用于创建系统快照 HANDLE WINAPI CreateToolhelp32Snapshot( __in DWORD dwFlags, //指定快照中包含的系统内容__in DWORD th32P…

springboot项目热部署实现(Spring Boot DevTools方式)

文章目录 Spring Boot DevTools简介Spring Boot DevTools原理spring Boot Devtools优缺点Spring Boot DevTools集成步骤第一步&#xff1a;添加maven依赖第二步&#xff1a;IDEA热部署配置 Spring Boot DevTools简介 Spring Boot DevTools是Spring Boot提供的一个开发工具&…

《动手学深度学习(PyTorch版)》笔记7.7

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过&…

Linux探秘之旅:透彻理解路径、命令与系统概念

目录 如何远程连接 远程登录简明指南 linux区别 1.严格区分大小写 2.linux的命令返回结果判断 3.如何查看网络信息 4.关于后缀名&#xff08;Linux不关心文件后缀&#xff09; 4.1 需要记忆的后缀 5.echo命令 6.linux一切皆文件 6.1比如磁盘的文件 6.2可执行文件 …

数字图像处理(实践篇)四十七 OpenCV-Python 高动态范围HDR

目录 一 HDR 二 实践 高质量的图像具备的要素如下: ①分辨率 图像中的像素数量。在特定屏幕尺寸下,分辨率越高,像素越多,显示的细节更精细。 ②位深度

“Hopf Oscillator-Based Gait Transition for A Quadruped Robot“代码复现

paper链接&#xff1a;https://ieeexplore.ieee.org/abstract/document/7090642/ import math import numpy as np import matplotlib.pyplot as plt# 设置中文显示 plt.rcParams[font.sans-serif] [SimHei] # 设置中文字体为黑体 plt.rcParams[axes.unicode_minus] False …

今年春节,德施曼成“春晚御用”智能锁,亮相总台春晚直播间

总台春晚&#xff0c;是每年春节期间的最大热点。 今年除夕夜&#xff0c;高端智能锁品牌德施曼&#xff0c;不仅成为“春晚御用”智能锁&#xff0c;还将旗下的哨兵猫眼智能锁&#xff0c;卖到了总台春晚的直播间里。龙年春节&#xff0c;德施曼智能锁携手小红书《大家的春晚》…