74HC595用来静态驱动数码管,HD7279用来驱动键盘。
74HC595比较好控制,它只要操作IO口输出的高低电平即可。
它的实现分这么几个步骤:
第一步:定义pin_mux。
static struct module_pin_mux hc595_pin_mux[] = {
{OFFSET(gpmc_a0), MODE(7)},
{OFFSET(gpmc_a1), MODE(7)},
{OFFSET(gpmc_a2), MODE(7)},
{OFFSET(gpmc_a3), MODE(7)},
{-1},
};
第二步:设置pin_mux。
configure_module_pin_mux(uart0_pin_mux);
第三步:编写74HC595的驱动文件。
第四步:在board.c文件中调用它们。
效果如下图:
HD7279的驱动稍微复杂一些,由于AM335x的GPIO为+3.3V电平,而HD7279为+5V电平,所以当HD7279的输出需要使用电阻分压。HD7279需要4根信号线,它们是:
!CS CLK DATA KEY
其中!CS和CLK为AM335x的输出,因此可以直接相连;KEY为AM335x的输入,DATA为双向,因此需要将它们在HD7279端经过电阻分压之后再与AM335x相连。
由于KEY和DATA的电平值实际上为+4.2V左右,因此我选取的电阻为10K和2.37K;2.37K还能够再大一些,只要保证高电平可以被AM335x识别。
第一步:定义pin_mux。
static struct module_pin_mux hd7279_pin_mux[] = {
{OFFSET(gpmc_a4), MODE(7) | RXACTIVE},
{OFFSET(gpmc_a5), MODE(7) | RXACTIVE},
{OFFSET(gpmc_a6), MODE(7)},
{OFFSET(gpmc_a7), MODE(7)},
{-1},
};
一定要注意RXACTIVE这个标识,否则读取不到引脚电平。
第二步:设置pin_mux。
configure_module_pin_mux(hd7279_pin_mux);
第三步:编写HD7279的驱动文件。
第四步:在board.c文件中调用它们。
效果如下图:
附件:
74HC595和HD7279的驱动文件: 74HC595.c 74HC595.h HD7279.c HD7279.h
用户377235 2015-1-27 21:34
您好,我也是一名嵌入式开发工程师,最近也在做内核移植工作。希望有机会和您交流,我的QQ 23025006 望添加。
DiracFatCat 2015-1-9 11:12
hot.summer_2010_438634915 2015-1-9 10:46