linux-2.2.12内核之clk_get()函数浅析

本文介绍了如何使用clk_get函数获取ADC时钟,并详细解释了A/D转换器时钟的预分频功能及其计算公式。此外,还展示了内核中与ADC时钟相关的具体实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

clk_get(NULL,"adc")可以获得adc时钟,每一个外设都有自己的工作频率,

PRSCVL是A/D转换器时钟的预分频功能时A/D时钟的计算公式

A/D时钟  = PCLK / (PRSCVL+1),

注意:AD时钟最大为2.5MHZ并且应该小于PCLK的1/5



clk_get从一个时钟list链表中以字符id名称来查找一个时钟clk结构体并且返回,最后调用clk.enable(),来时能对应的外设时钟源。

clk_get(NULL,"adc"),函数的第二个参数adc是在内核2.2.12中的arch/arm/mach-s3c2410/clock.c文件中定义的

/* clock definitions */


static struct clk init_clocks[] = {
{ .name    = "nand",
 .id   = -1,
 .parent  = &clk_h,
 .enable  = s3c24xx_clkcon_enable,
 .ctrlbit = S3C2410_CLKCON_NAND
},
{ .name    = "lcd",
 .id   = -1,
 .parent  = &clk_h,
 .enable  = s3c24xx_clkcon_enable,
 .ctrlbit = S3C2410_CLKCON_LCDC
},
{ .name    = "usb-host",
 .id   = -1,
 .parent  = &clk_h,
 .enable  = s3c24xx_clkcon_enable,
 .ctrlbit = S3C2410_CLKCON_USBH
},
{ .name    = "usb-device",
 .id   = -1,
 .parent  = &clk_h,
 .enable  = s3c24xx_clkcon_enable,
 .ctrlbit = S3C2410_CLKCON_USBD
},
{ .name    = "timers",
 .id   = -1,
 .parent  = &clk_p,
 .enable  = s3c24xx_clkcon_enable,
 .ctrlbit = S3C2410_CLKCON_PWMT
},
{ .name    = "sdi",
 .id   = -1,
 .parent  = &clk_p,
 .enable  = s3c24xx_clkcon_enable,
 .ctrlbit = S3C2410_CLKCON_SDI
},
{ .name    = "uart",
 .id   = 0,
 .parent  = &clk_p,
 .enable  = s3c24xx_clkcon_enable,
 .ctrlbit = S3C2410_CLKCON_UART0
},
{ .name    = "uart",
 .id   = 1,
 .parent  = &clk_p,
 .enable  = s3c24xx_clkcon_enable,
 .ctrlbit = S3C2410_CLKCON_UART1
},
{ .name    = "uart",
 .id   = 2,
 .parent  = &clk_p,
 .enable  = s3c24xx_clkcon_enable,
 .ctrlbit = S3C2410_CLKCON_UART2
},
{ .name    = "gpio",
 .id   = -1,
 .parent  = &clk_p,
 .enable  = s3c24xx_clkcon_enable,
 .ctrlbit = S3C2410_CLKCON_GPIO
},
{ .name    = "rtc",
 .id   = -1,
 .parent  = &clk_p,
 .enable  = s3c24xx_clkcon_enable,
 .ctrlbit = S3C2410_CLKCON_RTC
},
{ .name    = "adc",
 .id   = -1,
 .parent  = &clk_p,
 .enable  = s3c24xx_clkcon_enable,
 .ctrlbit = S3C2410_CLKCON_ADC
},
{ .name    = "i2c",
 .id   = -1,
 .parent  = &clk_p,
 .enable  = s3c24xx_clkcon_enable,
 .ctrlbit = S3C2410_CLKCON_IIC
},
{ .name    = "iis",
 .id   = -1,
 .parent  = &clk_p,
 .enable  = s3c24xx_clkcon_enable,
 .ctrlbit = S3C2410_CLKCON_IIS
},
{ .name    = "spi",
 .id   = -1,
 .parent  = &clk_p,
 .enable  = s3c24xx_clkcon_enable,
 .ctrlbit = S3C2410_CLKCON_SPI
},
{ .name    = "watchdog",
 .id   = -1,
 .parent  = &clk_p,
 .ctrlbit = 0
}
};




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值