N12 arm-clk时钟

一、C语言

套接字:

  • 交换机:二层设备,基于 MAC 地址转发,只在同一网段工作,无路由能力;
  • 路由器:三层设备,基于 IP 地址转发,跨网段互联;
  • 网关:网络的 "出口点",路由器常充当内网的默认网关

URG:紧急指针有效。

作用 :标记数据包中包含紧急数据,需要优先处理,无需等待缓冲区满。

ACK:确认号有效

作用 :除了第一次建立连接的 SYN 包外,几乎所有 TCP 数据包都会置位 ACK,是

可靠传输的基础。

PSH:立即推送数据

作用 :要求接收方立即将数据推送给应用层,不要在缓冲区等待更多数据。

RST:重置连接

作用 :强制异常关闭连接,拒绝继续通信,清空所有缓冲区数据。

SYN:同步序列号(建立连接)

:用于建立 TCP 连接,发起方向接收方同步初始序列号(ISN)。

FIN:释放连接


二、arm时钟

输入时钟源(左侧 CLOCK SWITCHER)
  • PLL1 (建议996MHz):ARM PLL,专门给 CPU 内核提供高频时钟。内核 默认528Mhz
  • PLL2 (固定528MHz):系统 PLL,带 4 路 PFD 分频输出(352/594/400/200MHz),用于DDR、外设等。
  • PLL3 (固定480MHz):USB / 系统 PLL,带 4 路 PFD 分频输(720/540/508.2/454.7MHz),用于 AHB、IPG 等总线。
  • PLL4 (650MHz):Audio PLL,用于音频外设。
  • PLL5 (650MHz):Video PLL,用于显示 / 视频外设。
  • 还可旁路 PLL,直接使用 OSC 24MHz 或其他外部时钟。
关键寄存器控制
  • CBxMR 系列 :时钟源选择寄存器(如 CBQMR[PRE_PERIPH2_CLK_SEL]),用于选择多路输入中的一路。
  • CBCDR/CSCDR 系列 :时钟分频寄存器(如 CBCDR[AHB_PDF]),设置后分频系数。
  • CACRR:专门用于 ARM 时钟的分频控制。
  • cg:时钟门控位,用于关闭未使用模块的时钟以降低功耗。
  • **MUX:**复用选择,多路选择器,从多个输入时钟源中选择一路作为当前时钟路径的输入。
符号颜色 名称 位宽 分频范围 用途
灰色 Static Divider 固定 固定分频比(如 ÷2、÷4) 固定比例的时钟分频
深绿色 2-bit Divider 2bit 1~4(即 ÷1、÷2、÷3、÷4) 简单、少档位的分频
青色 3-bit Divider 3bit 1~8 中等范围分频
橄榄绿 6-bit Divider 6bit 1~64 精细、大范围分频(如外设时钟微调)
  • CCM:时钟控制器(Clock Controller Module)
  • CCM_ANALOG:模拟 PLL 锁相环控制器
  • PFD(PLL2) 频率 = 基准频率(528) × 18 / PFD_FRAQ
  • PFD(PLL3) 频率 = 480 × 18 / FRAC
cs 复制代码
void clk_init(void)
{
    //ARM clk 528
    CCM->CCSR &= ~(1 << 8);    
    CCM->CCSR |= (1 << 2);

    unsigned int tmp = CCM->CACRR;
    tmp &= ~(0x7 << 0);
    tmp |= (0x1 << 0);
    CCM->CACRR = tmp;

    tmp = CCM_ANALOG->PLL_ARM;
    tmp &= ~(0x3 << 14);
    tmp |= (0x1 << 13);
    tmp &= ~(0x7f << 0);
    tmp |= (88 << 0);
    CCM_ANALOG->PLL_ARM = tmp;
    CCM->CCSR &= ~(1 << 2);   // ARM PLL 528M 

    //PLL2 pfd0~3  352-27  594-16  400(396)-24 200-48
    tmp = CCM_ANALOG->PFD_528;
    tmp &= ~((0x3f << 0) | (0x3f << 8) | (0x3f << 16) | (0x3f << 24));
    tmp |= ((27 << 0) | (16 << 8) | (24 << 16) | (48 << 24));
    CCM_ANALOG->PFD_528 = tmp;

    //PLL33 pfd0~3  720-12  540-16  508.2-17  454.7-19
    tmp = CCM_ANALOG->PFD_480;
    tmp &= ~((0x3f << 0) | (0x3f << 8) | (0x3f << 16) | (0x3f << 24));
    tmp |= ((12 << 0) | (16 << 8) | (17 << 16) | (19 << 24));
    CCM_ANALOG->PFD_480 = tmp;

    //AHB_CLK_ROOT  132M
    tmp = CCM->CBCDR;
    tmp &= ~(0x7 << 10);
    tmp |= (0x2 << 10);
    tmp &= ~(0x1 << 25);
    tmp &= ~(0x3 << 8);
    tmp |= (0x1 << 8);   //IPG_PODF   1/2  66M
    CCM->CBCDR = tmp;

    tmp = CCM->CBCMR;
    tmp &= ~(0x3 << 18);
    tmp |= (0x2 << 18);
    CCM->CBCMR = tmp;

    //PERCLK_CLK_ROOT 66M
    CCM->CSCMR1 &= ~(0x7f << 0);

    clk_gate_allenable();
}

三、定时器相关

EPIT:Enhanced Periodic Interrupt Timer(增强型周期性中断定时器)

向下递减

就是芯片里一个专门用来定时、产生中断的外设

  • Counter Register (32bit) :32 位倒计时计数器,你标注的 100 就是它的初始值,会在每个预分频时钟 沿减 1,直到减到 0
  • Load Register (32bit) :32 位重载寄存器,你标注的 10 是它的值。当计数器减到 0 时,会自动把这个值重新加载到计数器,开始下一轮倒计时。
  • Compare Register (32bit) :32 位比较寄存器,通常设为 0,当计数器值等于比较值时触发比较事件。
  • Prescaled Clock:经过分频后的时钟,是计数器递减的驱动节拍。
相关推荐
Bert.Cai13 分钟前
Linux whoami命令详解
linux·运维
x***r15122 分钟前
驱动精灵离线版使用指南:免联网快速安装驱动(万能网卡版)
linux·运维·服务器
嵌入式×边缘AI:打怪升级日志30 分钟前
Linux GPIO子系统与中断驱动开发:从入门到实战(完整版)
linux·运维·驱动开发
147API36 分钟前
多模型路由规则设计实战:第一版系统别做成黑盒
服务器·前端·javascript
kyle~1 小时前
SPOOLing 技术(假脱机技术)独占设备 → 虚拟共享设备
运维·服务器·网络
calm131 小时前
通信网络单元的划分和级别调整方法分享
网络·安全·web安全
车载诊断技术1 小时前
2026年经济政策与投资方向核心
网络·安全·架构·汽车·系统工程与系统架构的内涵
liliangcsdn1 小时前
多轮对话长上下文-增量摘要和结构化摘要示例
服务器·数据库·microsoft
卡比巴拉—林1 小时前
Linux SSH免密登录配置(双向免密)
linux·运维·ssh
NineData1 小时前
NineData 5.0 产品发布和生态伙伴大会,圆满举办!
运维·数据库·人工智能