基于ZStack3.0.1(CC2530)和ST7735S的HAL_LCD驱动替换(二)

上一篇搞定了字库的生成,今天这一篇就考虑驱动的编写了,根据开发板现有的电路图,OLED接口的引脚为:

命名描述占用引脚
GND接地线
VCC3.3V供电
CLK时钟P1_2
DIN数据P1_3
RST重置P1_7
D/C命令/数据P0_0

由于CC2530没有专用的通信接口可以和这玩意通信,因此需要使用以上几个GPIO口进行软实现完成数据的通信,本着拿来主义的精神,结合本人懒的个性,首先我就把使用到的引脚先定义起来。

#define HAL_LCD_CLK_PORT 1
#define HAL_LCD_CLK_PIN 2

#define HAL_LCD_DIN_PORT 1
#define HAL_LCD_DIN_PIN 3

#define HAL_LCD_RESET_PORT 1
#define HAL_LCD_RESET_PIN 7

#define HAL_LCD_DC_PORT 0
#define HAL_LCD_DC_PIN 0

再结合于此和Zstack中的例子,实现以下几个宏定义

//设置IO引脚的电平为高或者低
#define HAL_IO_SET(port, pin, val) HAL_IO_SET_PREP(port, pin, val)
#define HAL_IO_SET_PREP(port, pin, val) st(P##port##_##pin = val;)
//配置对应的引脚为通用输出引脚
#define HAL_CONFIG_IO_OUTPUT(port, pin, val) HAL_CONFIG_IO_OUTPUT_PREP(port, pin, val)
#define HAL_CONFIG_IO_OUTPUT_PREP(port, pin, val) st(P##port##SEL &= ~BV(pin); \
                                                     P##port##_##pin = val;    \
                                                     P##port##DIR |= BV(pin);)
//重置和D/C的选择
#define LCD_ACTIVATE_RESET() HAL_IO_SET(HAL_LCD_RESET_PORT, HAL_LCD_RESET_PIN, 0);
#define LCD_RELEASE_RESET() HAL_IO_SET(HAL_LCD_RESET_PORT, HAL_LCD_RESET_PIN, 1);
#define LCD_SEND_DATA() HAL_IO_SET(HAL_LCD_DC_PORT,HAL_LCD_DC_PIN,1);
#define LCD_SEND_COMMAND() HAL_IO_SET(HAL_LCD_DC_PORT,HAL_LCD_DC_PIN,0);
//操作时钟和数据引脚
#define LCD_DATA_HIGH() HAL_IO_SET(HAL_LCD_DIN_PORT,HAL_LCD_DIN_PIN,1)
#define LCD_DATA_HIGH() HAL_IO_SET(HAL_LCD_DIN_PORT,HAL_LCD_DIN_PIN,0)

至此IO引脚的功能就已经完成了,剩下要做的,就是使用这些IO引脚来完成各种通信了

比如实现了以下两个函数,用于向LCD驱动芯片发送指令或者是数据

void HalLcd_HW_Control(uint8 cmd);
void HalLcd_HW_Write(uint8 data);

后面的部分,就是如何去驱动液晶屏了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值