【龙芯1c库】封装时钟接口和使用示例

在RT-Thread上使用龙芯1c中的硬件I2C接口 本文以温湿度传感器AM2320为例、将AM2320接在龙芯1c的I2C0(或I2C1、I2C2)上,通过RT-Thread中龙芯1c的硬件I2C接口来读取温湿度信息,以此演示如何在RT-Thread下如何龙芯1c中的硬件I2C接口。 阅读详情
龙芯1c库是把龙芯1c的常用外设的常用功能封装为一个库,类似于STM32库。Git地址:https://gitee.com/caogos/OpenLoongsonLib1c

本文通过“龙芯1c库”中提供的时钟相关接口,获取了PLL,CPU,DDR和APB的时钟,并将其打印出来,然后再详细讲解是如何封装这几个接口的。

龙芯1c库中时钟接口使用示例

时钟接口简介

提供几个clk_get_xxx_rate()的接口,用于获取相应的频率。比如
pll的接口为clk_get_pll_rate(),
cpu的是clk_get_cpu_rate()。
apb的是clk_get_apb_rate()。

测试思路

在main()函数中获取pll,cpu,ddr,apb的频率,并打印出来。

代码清单

#include "../lib/gpio.h"
#include "../lib/clock.h"
#include "../lib/pwm_timer.h"
#include "../lib/ls1c_regs.h"
#include "led.h"



typedef long long off_t;

struct callvectors {
	int     (*open) (char *, int, int);
	int     (*close) (int);
	int     (*read) (int, void *, int);
	int     (*write) (int, void *, int);
	off_t   (*lseek) (int, off_t, int);
	int     (*printf) (const char *, ...);
	void    (*cacheflush) (void);
	char    *(*gets) (char *);
};

struct callvectors *callvec;

#define	myprintf (*callvec->printf)
#define	mygets   (*callvec->gets)


int main(int argc, char **argv, char **env, struct callvectors *cv)
{
	callvec = cv;
    unsigned long pll_rate, cpu_rate, ddr_rate, apb_rate, dc_rate;
    unsigned int ctrl;
    volatile unsigned int *clk_div_param = (volatile unsigned int *)LS1C_CLK_DIV_PARAM;

    ctrl = *clk_div_param;
    myprintf("[%s] ctrl=0x%x\n", __FUNCTION__, ctrl);

    pll_rate = clk_get_pll_rate();
    cpu_rate = clk_get_cpu_rate();
    ddr_rate = clk_get_ddr_rate();
    apb_rate = clk_get_apb_rate();
    dc_rate  = clk_get_dc_rate();
    myprintf("[%s] pll_rate=%luHz, cpu_rate=%luHz, ddr_rate=%luHz, apb_rate=%luHz, dc_rate=%luHz\n", 
              __FUNCTION__, pll_rate, cpu_rate, ddr_rate, apb_rate, dc_rate);
//    test_pwm();
    
	return(0);
}

运行结果


由测试结

龙芯1c封装硬件pwm接口使用示例 龙芯1c是把龙芯1c的常用外设的常用功能封装为一个,类似于STM32。Git地址:https://gitee.com/caogos/OpenLoongsonLib1c 本文通过“龙芯1c”中提供的PWM接口,实现了在4路pwm的输出连续的pwm脉冲单个脉冲。 在讲解了pwm接口之后,才开始详细介绍寄存器,以及怎样使用这些寄存器来封装接口,最后给出了封装的pwm接口代码清单。   龙芯... 阅读详情

相关推荐

龙芯1C102开发完全指南:从环境搭建到项目落地

掌握其开发流程与优化技巧,不仅能高效完成项目落地,更能为低功耗嵌入式系统的自主化开发积累实践经验。- 与1C101相比:架构从MIPS切换为龙架构,中断入口地址从0xbfc00380改为0x1c000000(可软件配置),CPU定时器中断映射至IP11(原IP1),其余硬件寄存器地址完全兼容[__LINK_ICON];- 与1C103相比:RAM起始地址为0x80000000(1C103为0x10000000),UART0地址沿用0xbfe80000,无需切换虚拟地址空间即可运行,更适合极简嵌入式场景。

IAMIF12的博客 1225

龙芯LS1C102单片机学习板(2)--CPU定时器中断

LS1C102学习板有LED1、LED2两个LED灯 上电,LED2常亮,LED1可编程点亮、熄灭 一.准备工作 编译工具 loongide 烧录工具 flashrom 1.创建本实验源码目录/home/linlin/ls1c102/ 2.在loongide新建项目名myls1c102,将向导生成的…/myls1c102/...

weixin_40395270的博客 1389

龙芯1C RTT】开始rt-thread

rt-thread官方repo地址是https://github.com/RT-Thread/rt-thread。1、准备工作注册一个github账号,fork rt-thread项目到自己的账号,通过git clone克隆到本地。git clone https://github.com/你的用户名/rt-thread.git2、添加远程仓为了方便同步官方的代码,我们需要添加官方的repo为远程...

z345695415的专栏 2038

LoongArch32 指令集探索学习1:初入龙芯

龙芯这个名字一听就是咱这龙的传人该用的东西,这是从MIPS指令集中新设计的指令集,官方名字叫LoongArch,简称LA。这个指令集分为开放的LoongArch32精简版LoongArch64,前者的32位指令集全部开源,后者64位只开放基础指令集,高级部分的二进制翻译暂且没有详细文档,而是由开发者在对GCC、Linux等基础软件贡献中露出。唐志敏仔细分析多种指令系统后,最终决定选择采用的MIPS指令系统。这是一种,主要是出于市场考虑:MIPS应用面比较广,服务器嵌入式系统都可以用;

Hailay的星空 3906

龙芯1C102使用VSCode编译问题

本文总结了基于VSCode开发LS1C102芯片时遇到的三个常见问题及解决方法:1)编译路径配置需在laide.makefile中修改;2)添加文件需在makefile中声明文件路径;3)解决代码提示错误需在c_cpp_properties.json中定义LS1C102宏。这些配置调整能有效解决编译路径、文件添加条件编译显示问题,保证开发环境正常运行

none 395

新年芯事 | 龙芯物联网主控芯片龙芯1C102龙芯1C103流片成功

前言近期,龙芯中科面向物联网领域研制的主控芯片--龙芯1C102龙芯1C103流片成功,两款微控制器芯片各项功能测试正常,符合设计预期。龙芯1C102主要面向智能家居以及其他物联网设备详细介绍龙芯1C102采用龙芯LA132处理器核心,是一款面向嵌入式领域定制的芯片产品,该芯片集成Flash、SPI、UART、I2C、RTC、TSENSOR、VPWN、ADC等功能模块,在满足低功耗要求的同时,...

dotNET跨平台 982

龙芯1c102 开发环境配置

使用vscode 配置 龙芯1c102 开发环境

Q976785473的博客 2438

windows上搭建龙芯1c开发环境(eclipse+mysys2)

一、交叉编译工具链下载安装 找到“mips-mingw32.zip”,解压后,剪切到目录“D:\Program Files (x86)”内(也可以其它目录,根据自己喜好),然后进入其中的bin目录,如下 将上图中的目录添加到环境变量中,如下 一、下载MinGWMinGW 官网下载:http://www.mingw.org ,点击右上角Downloads 网盘链接:https://pan.baidu.com/s/1vQVKycK1TKVsnLV_OMgiCg 提取码:bbhl 该软件已上传至博主资源内

虎康的博客 4114

Linux时钟管理透彻分析

转自http://blog.csdn.net/qq_21792169/article/details/51085111 硬件资源越来越庞大复杂,内核的另一个挑战就是要便捷的管理这些资源。同时,面对如此之多的平台不同的CPU ,管理机制需要统一适用,这就需要对资源的管理抽象到更加通用的层次。CPU中各个模块都需要时钟驱动,内核需 要一种机制能通用所有的平台,方便的管理CPU上所有的clk

qingkongyeyue的博客 2441

龙芯1B:timer定时器例程

龙芯1B:timer模拟定时器

嵌入式up 2542

神州龙芯GSC3290适配裕太YT8521S操作说明

神州龙芯gsc3290适配YT8521S的操作说明,YT8521S的寄存器配置

weixin_45698906的博客 7705

Linux启动过程分析(十一)--PLL各个外设时钟频率的设置

Board-da850-sdi.c (arch\arm\mach-davinci) 中的: MACHINE_START(DAVINCI_DA850_SDI, "DA850 SDI Development Board") .atag_offset = 0x100, .map_io = da850_evm_map_io, .init_irq = cp_intc_in

qq_40788950的博客 2776

龙芯软件开发(20)-- 频率初始化实时时钟

前面已经介绍进入C语言世界,就会实现更多的功能,支持更多的应用。现在就来仔细地分析源程序,并且理解各部份功能实现。 首先来看看下面的函数: /* * Returns the external clock frequency, usually the bus clock */ int tgt_cpufreq() { if(md_cpufreq == 0...

anjichan4261的博客 386

龙芯1c封装硬件I2C接口使用示例

龙芯1c是把龙芯1c的常用外设的常用功能封装为一个,类似于STM32。完整源码请移步到https://gitee.com/caogos/OpenLoongsonLib1c将温湿度传感器AM2320接在一个硬件I2C引脚上,使用本文封装好的接口与AM2320通信,读取温湿度信息。以此验证硬件I2C接口是否正常工作,其后在详细讲解是如何封装硬件I2C接口的。龙芯1c中硬件I2C接口使用示例硬件...

勤为本的专栏 3835

SylixOS龙芯1C适配总结

1.龙芯1C简介 1.1龙芯1C简介 龙芯 1C300(以下简称 1C)芯片是基于 LS232 处理器核的高性价比单芯片系统,可应用于指纹生物识别、物联传感等领域。1C 包含浮点处理单元,可以有效增强系统浮点数据处理能力。支持 8-bit SLC NAND 或 MLC NAND FLASH,提供高容量的存储扩展接口。 1C 为开发者提供了丰富的外设接口及片上模块,包括 Camera 控制器,

jj801238的博客 3433

龙芯处理器可以适配鸿蒙os吗,SylixOS龙芯1C适配总结

1.龙芯1C简介1.1龙芯1C简介龙芯 1C300(以下简称 1C)芯片是基于 LS232 处理器核的高性价比单芯片系统,可应用于指纹生物识别、物联传感等领域。1C 包含浮点处理单元,可以有效增强系统浮点数据处理能力。支持 8-bit SLC NAND 或 MLC NAND FLASH,提供高容量的存储扩展接口。1C 为开发者提供了丰富的外设接口及片上模块,包括 Camera 控制器, USB O...

weixin_39595271的博客 943

龙芯1C102单片机的中断

龙芯中断配置

none 612

全志D1/D1s芯片:芒果派麻雀点RGB屏填坑

前言 最近全志推出了D1处理器,搭载平头哥玄铁906 RISC-V的应用处理器。于是准备入手玩一下,买了芒果派做了基于D1s的麻雀板,D1s是D1内封64M DDR的版本,去掉了hdmi输出。 先晒下小巧精致的麻雀: 点屏 手上正好有块480*272的rgb屏,可以用这个小板子来点一下。想来rgb屏幕应该很好适配,dts里改几个参数就完事了,不过多次调整怎么也没法让画面正常输出,这个问题应该有不少人遇到。先直入主题说一下如何修复问题吧,后面在详细记录填坑过程。 快速上手体验 我修复的代码patch在这里

qq_34440409的博客 1万+
上一篇: 【龙芯1c库】封装gpio接口和使用示例
下一篇: 【龙芯1c库】封装硬件pwm接口和使用示例
勤为本
博客等级 码龄15年 215粉丝 60原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值