• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    電源管理芯片AXP192在手持設(shè)備上的應(yīng)用

    2014-09-06 10:50:08鄒勁林超楊琦
    關(guān)鍵詞:驅(qū)動程序內(nèi)核時序

    鄒勁,林超,楊琦

    (廣州中海達衛(wèi)星導(dǎo)航技術(shù)股份有限公司,廣州 511400)

    ?

    電源管理芯片AXP192在手持設(shè)備上的應(yīng)用

    鄒勁,林超,楊琦

    (廣州中海達衛(wèi)星導(dǎo)航技術(shù)股份有限公司,廣州 511400)

    大多數(shù)移動或手持產(chǎn)品使用低功耗、高度集成的微處理器平臺,需要多路供電電壓和電池管理功能,電源管理芯片滿足這些需求并具備其他特性。本文介紹了一種國產(chǎn)電源管理芯片AXP192應(yīng)用在以三星S5PV210移動處理器為核心的工業(yè)平板上的方案,給出了AXP192與S5PV210的電源分配設(shè)計、上電時序以及AXP192控制接口原理設(shè)計和基于Linux操作系統(tǒng)的驅(qū)動程序設(shè)計,實現(xiàn)了電源的智能管理,達到降低功耗、延長設(shè)備使用時間的目的。

    電源管理;手持設(shè)備;PMIC;Linux;S5PV210;AXP192

    引 言

    AXP192 是KrossPower公司的一款高度集成的電源系統(tǒng)管理芯片(PMIC),具有可定制、初始化多路輸出電壓、可編程設(shè)置各路輸出電壓、體積小、加工方便和價格便宜等優(yōu)點。配合S5PV210使用,可減少核心供電使用獨立電源數(shù)量,同時減小PCB使用面積,動態(tài)調(diào)節(jié)核心電壓,智能管理最小系統(tǒng)電源,最大程度降低設(shè)備使用功耗,從而達到延長設(shè)備使用壽命的目的。相比三星配套推薦的WM8310,在同樣滿足功能和性能穩(wěn)定的基礎(chǔ)上,AXP192加工方便、價格便宜、供貨穩(wěn)定和周期短是其最大的優(yōu)勢。

    1 硬件設(shè)計

    1.1 S5PV210電源設(shè)計與上電時序

    S5PV210工作模式有正常、待機、休眠3種。根據(jù)這3種工作模式,分析各路電源需要的電流大小、上電時間先后、使用電壓的大小等,將S5PV210的電源分成幾組,合并可以一起供電的電源,在滿足3種工作模式的前提條件下,盡可能優(yōu)化電源的供給,減少獨立電源的使用。根據(jù)優(yōu)化后的電源設(shè)計,S5PV210最小系統(tǒng)只需要3路DC-DC和7路LDO便可以正常工作,AXP192能提供7路電源,因此只需要額外增加3路獨立的LDO。本設(shè)計方法相比AXP192為Cortex-A8內(nèi)核處理器推薦的設(shè)計減少了5路獨立電源,大大減少了獨立電源芯片的使用,這也是本設(shè)計的優(yōu)勢所在。

    AXP192具有3路DC-DC以及4路LDO,各路特性如表1所列。

    7路電源輸出除了LDO1是固定電壓輸出外,其他6路電源均可通過I2C總線控制接口打開或者關(guān)閉其輸出,并可設(shè)置它們的電壓大小。

    根據(jù)AXP192各路電源的驅(qū)動能力和S5PV210電源對電流大小的要求,將DC-DC1和DC-DC3分別接到S5PV210的內(nèi)核電源VDD_INT_AP和VDD_ARM_AP,這兩個內(nèi)核電壓隨著ARM內(nèi)核、總線工作頻率做相應(yīng)的調(diào)節(jié),以實現(xiàn)正常工作情況下最優(yōu)的功耗。DC-DC2給DDR2內(nèi)存和S5PV210的內(nèi)存總線接口電路供電,其他各路LDO給S5PV210的I/O電路供電。根據(jù)電源分配,額外增加的3路獨立LDO,其中LDO4供電VDD_ALIVE_AP,LDO5供電VDD_xPLL_AP,LDO6供電其他I/O電路。

    表1 AXP192各路特性表

    S5PV210有嚴格的上電時序要求,如圖1所示。為了保證每次上電都能正確運行,各路電源的上電時序必須要滿足其需求。AXP192除LDO1外的6路電源的上電時序均可配置,每步延時間隙分別有1 ms、4 ms和16 ms三種選擇,上電步驟選擇方式A則有7個上電順序配置。

    圖1 S5PV210上電時序要求

    圖2 AXP192與S5PV210通信接口設(shè)計

    根據(jù)S5PV210上電時序要求設(shè)定3步上電順序,每步上電延時間隙均為4 ms。具體上電時序分配為:第1步上電DC-DC2,并用DC-DC2作為LDO4的輸入使其同時上電;第2步上電DC-DC1和DC-DC3,并用DC-DC1使能LDO5;第3步上電剩余的LDO。按此設(shè)計的供電方式簡單有效,S5PV210每次都能正常開機,并且運行穩(wěn)定。

    1.2 AXP192與S5PV210通信接口設(shè)計

    AXP192通過I2C總線接口與S5PV210通信。工作時,I2C總線引腳上拉到系統(tǒng)I/O電源,S5PV210可以通過這個接口去打開或關(guān)閉某些電源輸出,設(shè)置它們的電壓,訪問內(nèi)部寄存器和多種測量數(shù)據(jù)等。其他系統(tǒng)管理如復(fù)位信號、休眠信號、中斷信號等接口如圖2所示。

    2 驅(qū)動程序設(shè)計

    應(yīng)用中采用Android2.3.7操作系統(tǒng),其內(nèi)核是Linux2.6.35。在Linux系統(tǒng)中,I2C總線驅(qū)動由3部分組成,即I2C總線核心、I2C總線驅(qū)動和I2C設(shè)備驅(qū)動,其中I2C核心、I2C總線驅(qū)動Linux內(nèi)核已經(jīng)完善,因此,驅(qū)動程序的開發(fā)主要集中在AXP192設(shè)備驅(qū)動這一層,用來實現(xiàn)對AXP192各種功能的操作控制,其中主要是對其寄存器的讀寫操作。驅(qū)動實現(xiàn)的功能有系統(tǒng)開關(guān)機、各路電壓的動態(tài)設(shè)置以及打開與關(guān)閉等。

    Linux內(nèi)核有兩種編寫I2C設(shè)備驅(qū)動方式:legacy方式和new style方式。應(yīng)用中使用new style方式,其中重要的I2C_driver結(jié)構(gòu)體為:

    static struct i2c_driver axp192_pmic_driver = {

    .probe = axp192_pmic_probe,

    //當有i2c_client和i2c_driver匹配時調(diào)用

    .remove = __devexit_p(axp192_pmic_remove),

    //注銷時調(diào)用

    .driver = {

    .name = "axp192", //設(shè)備名稱

    },

    .id_table = axp192_ids,//匹配規(guī)則

    };

    下面介紹驅(qū)動中幾個函數(shù)的具體實現(xiàn)方法。

    (1) AXP192設(shè)備初始化函數(shù)

    static int __devinit axp192_pmic_probe(struct i2c_client *client,const struct i2c_device_id *i2c_id){

    struct regulator_dev **rdev;

    struct axp192_platform_data *pdata = client->dev.platform_data;

    struct axp192_data *axp192;

    int i = 0, id, ret;

    if (!pdata)

    return -EINVAL;

    axp192 = kzalloc(sizeof(struct axp192_data), GFP_KERNEL); //分配內(nèi)存空間

    if (!axp192)

    return -ENOMEM;

    axp192->rdev = kzalloc(sizeof(struct regulator_dev *) * (pdata->num_regulators + 1), GFP_KERNEL);

    if (!axp192->rdev) {

    kfree(axp192);

    return -ENOMEM;

    }

    if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) { //檢查I2C設(shè)備的功能

    AXPDBG("i2c error");

    return-ENODEV;

    }

    axp192->client = client; //將client賦值給全局變量

    axp192->dev = &client->dev;

    axp192->pdata = pdata;

    i!2c_set_clientdata(client, axp192);

    axp192_point = axp192;

    mutex_init(&axp192->mutex); //互斥,防止線程卡死

    return 0;

    }

    (2) I2C讀函數(shù)

    static int axp192_i2c_read(struct i2c_client *client, u8 reg, u8 *dest){

    struct i2c_msg msg[2];

    uint8_t buf0[4];

    uint8_t buf1[8];

    int ret;

    ret = i2c_smbus_read_byte_data(client, reg);

    if (ret < 0){

    printk(KERN_ERR "i2c_transfer failed:%d ",ret);

    return -EIO;

    }

    *dest = ret & 0xff;

    }

    (3) I2C寫函數(shù)

    static int axp192_i2c_write(struct i2c_client *client, u8 reg, u8 value){

    return i2c_smbus_write_byte_data(client, reg, value);

    }

    (4) AXP192寄存器讀操作函數(shù)

    static u8 axp192_read_reg(struct axp192_data *axp192, u8 reg){

    u8 val = 0;

    mutex_lock(&axp192->mutex);

    axp192_i2c_read(axp192->client, reg, &val);

    mutex_unlock(&axp192->mutex);

    return val;

    }

    (5) AXP192寄存器寫操作函數(shù)

    static int axp192_write_reg(struct axp192_data *axp192, u8 reg, u8 value){

    mutex_lock(&axp192->mutex);

    axp192_i2c_write(axp192->client, reg, value);

    mutex_unlock(&axp192->mutex);

    return 0;

    }

    具體的設(shè)備驅(qū)動完成后,將AXP192設(shè)備驅(qū)動的配置添加到相應(yīng)的kconfig文件中,在配置內(nèi)核選項時就可以把AXP192設(shè)備驅(qū)動添加到內(nèi)核中,系統(tǒng)啟動時可自動加載AXP192設(shè)備驅(qū)動。驅(qū)動設(shè)計成功后,可以編寫相應(yīng)的上層應(yīng)用軟件對AXP192驅(qū)動進行管理應(yīng)用,如控制某個設(shè)備電源的開關(guān)等。

    結(jié) 語

    AXP192完全可替代三星配套推薦的WM8310使S5PV210正常工作。相比WM8310,AXP192可輸出電源路數(shù)不多,需要額外增加3路LDO。但是,AXP192的QFN-48封裝比WM8310的0.4 mm間距焊球容易加工和維修,而且PCB設(shè)計走線要求比WM8310低。其他方面(如價格、供貨周期等)都有極大的優(yōu)勢。

    [1] 李俊. 嵌入式Linux 設(shè)備驅(qū)動程序[M].北京:人民郵電出版社, 2008:206-230.

    [2] 程昌南.ARM Cortex-A8硬件設(shè)計DIY[M].北京:北京航空航天大學(xué)出版社, 2012(10): 9-160.

    [3] 胡文,寧世勇,李明俊,等. Android嵌入式系統(tǒng)程序開發(fā)(基于Cortex-A8) [M].北京:機械工業(yè)出版社,2013(2):194-200.

    [4] 朱南浩,李正祥.嵌入式Linux中I2C設(shè)備驅(qū)動程序的研究與實現(xiàn)[J].微計算機信息,2010,26(4): 67-69.

    [5] Samsung Electronics. S5PV210_Hardware Design Guide_Rev1.0[EB/OL].(2010-02)[2014-05].http://www.samsung.com/global/business/semiconductor/.

    [6] X-powers. AXP19x EVM Guide [EB/OL].[2014-05]. http://www.x-powers.com/.

    [7] X-powers. AXP192 Datasheet v1.13 [EB/OL].[ 2014-05]. http://www.x-powers.com/.

    鄒勁(學(xué)士),主要從事手持設(shè)備硬件開發(fā)。

    Application of Power Management Chip AXP192 on Handheld Device

    Zou Jin,Lin Chao,Yang Qi

    (Product Research&Development Center,Hi-Target Survey Instruments Company Ltd.,Guangzhou 511400,Chian)

    Because of making use of low-power and high-integrated microprocessor platform, most of mobile or handheld products require multiple supply voltages and battery management. Power management chip meets these needs and has other features.In this paper,domestic power management chip AXP192 is applied in the industrial tablet using Samsung S5PV210 mobile processor as the core.Through the designes of power distribution of AXP192 and S5PV210,power-on sequences,control interface of AXP192 and driver based on Linux, the intelligent management of power supply is realized so as to reduce power consumption and extend the use time of the equipments.

    power management;handheld device;PMIC;Linux;S5PV210;AXP192

    TP216

    A

    迪娜

    2014-05-22)

    猜你喜歡
    驅(qū)動程序內(nèi)核時序
    時序坐標
    萬物皆可IP的時代,我們當夯實的IP內(nèi)核是什么?
    基于Sentinel-2時序NDVI的麥冬識別研究
    強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
    基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
    Linux內(nèi)核mmap保護機制研究
    一種毫米波放大器時序直流電源的設(shè)計
    電子制作(2016年15期)2017-01-15 13:39:08
    DPBUS時序及其設(shè)定方法
    河南科技(2014年15期)2014-02-27 14:12:36
    驅(qū)動程序更新與推薦
    驅(qū)動程序更新與推薦
    五莲县| 博罗县| 昌邑市| 银川市| 泽普县| 射阳县| 西昌市| 三穗县| 岳池县| 上饶县| 宁安市| 云和县| 老河口市| 巫山县| 泰兴市| 义乌市| 洛川县| 高州市| 铜陵市| 丹巴县| 丽水市| 阳春市| 盱眙县| 荣昌县| 女性| 元氏县| 比如县| 金秀| 赤峰市| 西丰县| 藁城市| 托里县| 邵阳县| 阿坝| 张家界市| 定襄县| 通渭县| 新蔡县| 阿拉尔市| 沈丘县| 福安市|