国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

迅為4412開發板-驅動-電源管理芯片S5M8767修改輸出例程

發布時間:2020-10-27 10:33    發布者:落風
關鍵詞: 迅為 , 4412 , 開發板
本文檔介紹,如何修改和控制 S5M8767,以 camera 擴展端子的 VDD28_AF,VDD28_CAM 為例,來具體介紹驅動中如何實現電源修改和控制。
另外還有一個文檔“iTOP-4412-驅動-電源管理芯片修改輸出電壓”,用戶可以在技術支持群中搜到,其中涉及到具體結構的分析,也很有參考價值。
本文檔以具體的驅動小例程介紹在已經配置好的源碼中做修改,用戶可以將其集成到自己的驅動中,也提供了驅動測試例程壓縮包“power_s5m8767a.tar.gz”。
1. 硬件分析
1.1 原理圖分析
如下圖所示,在底板原理圖中找到 camera 擴展端子,這里以 VDD28_AF,VDD28_CAM 為例。camera 攝像頭驅動中需要將其設置為 2.8v 的電壓,后面我們將其修改為 3.3v 輸出(需要去掉 camera 攝像頭驅動)。

如下圖所示,核心板原理圖中搜索網絡“VDD28_AF”和“VDD28_CAM”。可以看到“VDD28_AF”和“VDD28_CAM”分別對應電源芯片 S5M8767A 的“VLDO20”和“VLDO21”。

1.2 電源芯片 S5M8767A 的 datasheet 分析
S5M8767A 的 datasheet 的 2.3.1 小節,如下圖所示。

如上圖所示,注意紅框中的內容。最上面的紅框中,表示輸出的電流是 150mA,最低輸出電壓是 0.8v,最大電壓是 3.95v。下面紅框中,介紹的是默認輸出電壓,可以看到 LDO20和 LDO21,默認輸出的是 3.0v。
2. 軟件
如果要改變輸出電壓,可以通過修改平臺文件實現;在驅動中,可以通過函數調用,控制電源輸出。
通過前面的分析可知,ldo21 和 ldo20 輸出電流范圍是 0.8v 到 3.95v。
2.1 平臺文件修改輸出電壓
在內核的“arch/arm/mach-exynos/mach-itop4412.c”文件中,如下圖所示進行修改。

將REGULATOR_INIT(ldo20, "VDD28_CAM", 2800000, 2800000, 0,REGULATOR_CHANGE_STATUS, 1);
注釋掉,修改為 2800000,為 3950000(函數 REGULATOR_INIT 中的第一個參數表示8767 電源芯片的第 20 路,第三個參數表示輸出最低電壓,第四個參數表示輸出最高電壓)。這里設置為最低和最高全部為 3.95v。同理,我們將第 21 路也修改為 3950000,如上圖所示。
接著在 menuconfig 中,將 ov5640 攝像頭的驅動去掉,因為在攝像頭中會初始化和配置。ov5640 攝像頭攝像頭的配置路徑如下圖所示。下面截圖是已經去掉的截圖,默認缺省文件是配置上的。

2.2 驅動例程
驅動例程“power_s5m8767a.tar.gz”和文檔在同一壓縮包中。
編寫一個簡單的驅動測試程序,源碼如下所示。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
struct regulator *ov_vddaf_cam_regulator = NULL;
struct regulator *ov_vdd5m_cam_regulator = NULL;
struct regulator *ov_vdd18_cam_regulator = NULL;
struct regulator *ov_vdd28_cam_regulator = NULL;
MODULE_LICENSE("Dual BSD/GPL");
MODULE_AUTHOR("iTOPEET_dz");
static int power(int flag)
{
if(1 == flag){
regulator_enable(ov_vdd18_cam_regulator);
udelay(10);
regulator_enable(ov_vdd28_cam_regulator);
udelay(10);
regulator_enable(ov_vdd5m_cam_regulator); //DOVDD DVDD 1.8v
udelay(10);
regulator_enable(ov_vddaf_cam_regulator); //AVDD 2.8v
udelay(10);
}
else if(0 == flag){
regulator_disable(ov_vdd18_cam_regulator);
udelay(10);
regulator_disable(ov_vdd28_cam_regulator);
udelay(10);
regulator_disable(ov_vdd5m_cam_regulator);
udelay(10);
regulator_disable(ov_vddaf_cam_regulator);
udelay(10);
}
return 0 ;
}
static void power_init(void)
{
int ret;
ov_vdd18_cam_regulator = regulator_get(NULL, "vdd18_cam");
if (IS_ERR(ov_vdd18_cam_regulator)) {
printk("%s: failed to get %s\n", __func__, "vdd18_cam");
ret = -ENODEV;
goto err_regulator;
}
ov_vdd28_cam_regulator = regulator_get(NULL, "vdda28_2m");
if (IS_ERR(ov_vdd28_cam_regulator)) {
printk("%s: failed to get %s\n", __func__, "vdda28_2m");
ret = -ENODEV;
goto err_regulator;
}
ov_vddaf_cam_regulator = regulator_get(NULL, "vdd28_af");
if (IS_ERR(ov_vddaf_cam_regulator)) {
printk("%s: failed to get %s\n", __func__, "vdd28_af");
ret = -ENODEV;
goto err_regulator;
}
ov_vdd5m_cam_regulator = regulator_get(NULL, "vdd28_cam");
if (IS_ERR(ov_vdd5m_cam_regulator)) {
printk("%s: failed to get %s\n", __func__, "vdd28_cam");
ret = -ENODEV;
goto err_regulator;
}
err_regulator:
regulator_put(ov_vddaf_cam_regulator);
regulator_put(ov_vdd5m_cam_regulator);
regulator_put(ov_vdd18_cam_regulator);
regulator_put(ov_vdd28_cam_regulator);
}
static int hello_init(void)
{
power_init();
power(1);
printk(KERN_EMERG "Hello World enter!\n");
return 0;
}
static void hello_exit(void)
{
power(0);
printk(KERN_EMERG "Hello world exit!\n");
}
module_init(hello_init);
module_exit(hello_exit);
Makefile 如下所示。
#!/bin/bash
obj-m += power_s5m8767a_test.o
KDIR := /home/topeet/android4.0/iTop4412_Kernel_3.0
PWD ?= $(shell pwd)
all:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -rf *.o modules.order *.ko *mod.c Module.symvers
使用 make 命令編譯驅動模塊,如下圖所示。

3. 測試
如下圖所示,加載驅動之后,測量電壓大約為 2.85 左右(有壓降),卸載驅動之后,電
壓為 0。說明驅動運行成功,用戶在自己的項目中,假如需要用到電源控制,可以參考本例程
來實現。

對于初學者來說,選擇一款合適的開發板非常重要!
迅為給出了明確的學習路線,首先,你需要研讀一下這個視頻教程:
嵌入式學習方法篇:https://www.bilibili.com/video/BV1HE411w7by?p=1
然后,需要學習一下Linux的系統框架: https://www.bilibili.com/video/BV1HE411w7by?p=2
接下來可以做一些實踐了,比如編譯系統的安裝、編譯以及燒寫;這些可以按照迅為的視頻教程來學習,也可以參考多達2300頁的用戶使用手冊。
入門篇:https://www.bilibili.com/video/B ... 7086078002054549963
另外,迅為提供了廣受贊譽的QT入門教程:  
QT學習篇:https://www.bilibili.com/video/B ... 7086078002054549963
接下來可以學習一下驅動相關技術:  
Linux驅動專題:https://www.bilibili.com/video/B ... 2661886997282795316
再往下是非常接地氣的實戰教程:
機車導航項目:https://www.bilibili.com/video/B ... 7086078002054549963
云服務器智能家居:https://www.bilibili.com/video/B ... 7086078002054549963
按這樣的路線圖學下來,在迅為強大售后的幫助下,相信你很快跨入嵌入式開發的大門!

本文地址:http://www.qingdxww.cn/thread-606889-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 5分鐘詳解定時器/計數器E和波形擴展!
  • 無線充電基礎知識及應用培訓教程3
  • PIC18-Q71系列MCU概述
  • 無線充電基礎知識及應用培訓教程2
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美视频日韩专区午夜 | 四虎永久网站 | 精品在线网站 | 91人成亚洲高清在线观看 | 伊人2222 | 亚洲高清免费 | 韩国一级毛片视频 | 亚洲黄色成人 | 中文字幕一区二区三区久久网站 | 国产对白在线观看 | 中文字幕第一页在线 | 黑人一区二区三区中文字幕 | 欧美性色黄大片www 欧美性色xo影院永久禁欲 | 国产传媒蜜果冻天美传媒 | 国产精品免费视频一区一 | 狼狼色丁香久久女婷婷综合 | 91香蕉视频网址 | 91app在线观看 | 亚洲天堂欧美 | 国产在线干| 亚洲成人观看 | 自拍偷拍首页 | 免费一级a毛片夜夜看 | 四虎官方影库 | 免费观看国产一区二区三区 | 亚洲视频在线免费播放 | aaa一级| 全色导航 | 久久久精品国产四虎影视 | 99re视频精品 | 欧美一级日韩一级亚洲一级va | 国产门事件在线 | 亚洲区免费| 免费观看黄页网站 | 国产真实乱偷人视频 | 99综合视频 | 视频一本大道香蕉久在线播放 | 国产精品人成 | 青草香蕉精品视频在线观看 | 国产99久9在线 | 黄图视频在线观看 |