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:经过分频后的时钟,是计数器递减的驱动节拍。
相关推荐
大灰狼来喽2 小时前
OpenClaw 自动化工作流实战:用 Hooks + 定时任务 + Multi-MCP 构建“数字员工“
大数据·运维·人工智能·自动化·aigc·ai编程
lbb 小魔仙2 小时前
Docker容器化实战:从入门到精通,附完整实战案例
运维·docker·容器
by————组态2 小时前
Ricon组态系统:物联网时代的连接桥梁
运维·物联网·数学建模·组态·组态软件
香芋超新星2 小时前
服务器根目录爆满导致 PyTorch 安装失败(Errno 28 No space left on device)
服务器·pytorch·深度学习
java资料站2 小时前
笔记本安装Ubuntu20.04(详细
运维
jessecyj2 小时前
Nginx中$http_host、$host、$proxy_host的区别
运维·nginx·http
soldierluo2 小时前
openclaw接入企业微信
服务器·人工智能·windows·企业微信
skiy2 小时前
Nginx搭建负载均衡
运维·nginx·负载均衡
珠海西格电力2 小时前
零碳园区能源互联的落地保障措施
大数据·运维·网络·人工智能·能源