微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > MXCHIP使用心得+(3)MX1081使用SPI驱动HC595的LED灯带

MXCHIP使用心得+(3)MX1081使用SPI驱动HC595的LED灯带

时间:10-02 整理:3721RD 点击:


MX1081使用SPI驱动HC595的LED灯带

HC595芯片是一个8bit串行输入,并行输出的驱动芯片。广泛引用于LED、数码管等驱动。对于单色LED灯条驱动而言,成本低而且PCB面积小,非常适合灯条的应用。

1、HC595的电路设计和驱动时序

根据HC595的datasheet,其驱动电路主要是具有8位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存储器是分别的时钟。 数据在SHcp(移位寄存器时钟输入)的上升沿输入到移位寄存器中,在STcp(存储器时钟输入)的上升沿输入到存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。 移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。


因此,设计采用SPI来驱动HC595,同时两片595(可以更多)相互级联,形成整个LED灯条。

电路图设计如下。使用第一个HC595的NQH来驱动下一个HC595的SER。


2、MX1081的SPI驱动

使用STMCube,加入SPI功能如下。并配置SPI引脚和初始化设置如下。其中比较关键的是CPOL和CPHA。



代码如下图:

/* USER CODE BEGIN 0 */

static uint8_t color_data[] = {0x5E, 0xFE, 0x0F, 0xF0};

const static int LED_COUNTS = sizeof(color_data)/sizeof(uint8_t);

void Reset_HC595(void) {

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);

HAL_SPI_Transmit(&hspi1, color_data, 1, 0);

__NOP();

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);

HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_2);

HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_2);

HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_2);

HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_2);

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);

}

void Set_HC595(void) {

Reset_HC595();

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);

HAL_SPI_Transmit(&hspi1, color_data, LED_COUNTS, 0);

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);

HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_2);

HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_2);

HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_2);

HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_2);

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);

}

/* USER CODE END 0 */


while (1)

{

Reset_HC595();

HAL_Delay(1000);

color_data[0] = 0xF0;

color_data[1] = 0x0F;

Set_HC595();

HAL_Delay(1000);

for(int i = 0; i < 256; i++) {

color_data[0] = 255 - i;

color_data[1] = i;

Set_HC595();

HAL_Delay(10);

}

HAL_Delay(1000);

}

/* USER CODE END 3 */

运行效果图:


http://v.youku.com/v_show/id_XODYwOTMzMjky.html

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top