lm3556的核心驅動¶
德州儀器: 1.5 A 同步升壓 LED 閃光燈驅動器,帶高邊電流源
- 作者
Daniel Jeong
聯絡方式: Daniel Jeong(daniel.jeong-at-ti.com, gshark.jeong-at-gmail.com)
描述¶
LM3556有3個功能,閃光燈,手電筒和指示燈。
閃光燈模式¶
在閃光燈模式下,LED電流源(LED)提供從 93.75 mA 到 1500 mA 的 16 個目標電流級別。閃光燈電流透過電流控制暫存器(0x09)進行調整。閃光燈模式透過使能暫存器(0x0A)啟用,或者透過將STROBE引腳拉高啟用。
LM3556 閃光燈可以透過 /sys/class/leds/flash/brightness 檔案控制。
如果啟用了STROBE引腳,則以下示例僅控制亮度,ON / OFF將由STROBE引腳控制。
閃光燈示例
OFF
#echo 0 > /sys/class/leds/flash/brightness
93.75 mA
#echo 1 > /sys/class/leds/flash/brightness
...
1500 mA
#echo 16 > /sys/class/leds/flash/brightness
手電筒模式¶
在手電筒模式下,電流源(LED)透過電流控制暫存器(0x09)進行程式設計。手電筒模式透過使能暫存器(0x0A)或硬體TORCH輸入啟用。
LM3556 手電筒可以透過 /sys/class/leds/torch/brightness 檔案控制。 * 如果啟用了TORCH引腳,則以下示例僅控制亮度,ON / OFF將由TORCH引腳控制。
手電筒示例
OFF
#echo 0 > /sys/class/leds/torch/brightness
46.88 mA
#echo 1 > /sys/class/leds/torch/brightness
...
375 mA
#echo 8 > /sys/class/leds/torch/brightness
指示燈模式¶
指示燈模式可以透過 /sys/class/leds/indicator/pattern 檔案設定,並且在 indicator_pattern 陣列中預定義了 4 種模式。
根據 N-lank,脈衝時間和 N 週期值,將生成不同的模式。如果希望為自己的裝置提供新的模式,請使用自己的值和 INDIC_PATTERN_SIZE 更改 indicator_pattern 陣列。
有關 N-Blank,脈衝時間和 N 週期的更多詳細資訊,請參考資料表。
指示燈模式示例
pattern 0
#echo 0 > /sys/class/leds/indicator/pattern
...
pattern 3
#echo 3 > /sys/class/leds/indicator/pattern
指示燈亮度可以透過 sys/class/leds/indicator/brightness 檔案控制。
示例
OFF
#echo 0 > /sys/class/leds/indicator/brightness
5.86 mA
#echo 1 > /sys/class/leds/indicator/brightness
...
46.875mA
#echo 8 > /sys/class/leds/indicator/brightness
註釋¶
驅動程式期望使用 i2c_board_info 機制註冊。要在特定介面卡上的地址 0x63 處註冊晶片,請根據 include/linux/platform_data/leds-lm3556.h 設定平臺數據,設定 i2c 板資訊
示例
static struct i2c_board_info board_i2c_ch4[] __initdata = {
{
I2C_BOARD_INFO(LM3556_NAME, 0x63),
.platform_data = &lm3556_pdata,
},
};
並在平臺初始化函式中註冊它
示例
board_register_i2c_bus(4, 400,
board_i2c_ch4, ARRAY_SIZE(board_i2c_ch4));