4643|21

6846

帖子

11

TA的资源

版主

【国民技术N32G457评测】SPI_ST7735 基于RT—Thread Studio [复制链接]

 

今天买的LCD屏到货了,芯片是ST7735。9.9元买的。。

前面SPI驱动花了好多时间,今天在前面的基础上驱动SPI显示屏,同时也是巩固rt-thread studio的spi使用熟练度。

1、由于没有st7735的库,买的屏的例程是Luaos驱动,所以花了一点时间去网上找驱动。这里要感谢Hei51的这位网友提供的驱动。STM32- ST7735 1.8寸TFT-LCD程序 - STM32/8

2、这个驱动是基于stm32f103C8的,我下载下来接上线,屏点亮成功,说明屏是好的。

3、例程所写的这模拟spi驱动的,我看了一下,只需要配置把接口全部配置为输出就OK了。

//  功能描述   :N32G45 st7735
//              说明:
//              ----------------------------------------------------------------
//              GND   电源地
//              VCC   3.3v电源
//              SCL   PA5(SCLK)
//              SDA   PA7(MOSI)
//              RES   PC4   33
//              DC    PC5   34
//              CS    PA4
//              BLK   PB0   35
//              ----------------------------------------------------------------

#define RES_PIN  33  //PC4   
#define DC_PIN   34  //PC5   
#define BLK_PIN  35  //PB0   
#define SCK_PIN  30  //PA5
#define MOSI_PIN 32  //PA7
#define CS_PIN   29  //PA4

rt_pin_mode(RES_PIN, PIN_MODE_OUTPUT);
rt_pin_mode(DC_PIN, PIN_MODE_OUTPUT);
rt_pin_mode(BLK_PIN, PIN_MODE_OUTPUT);
rt_pin_mode(SCK_PIN, PIN_MODE_OUTPUT);
rt_pin_mode(MOSI_PIN, PIN_MODE_OUTPUT);
rt_pin_mode(CS_PIN, PIN_MODE_OUTPUT);

然后更新宏定义:

#define LCD_SCLK_Clr() rt_pin_write(SCK_PIN, PIN_LOW)//SCL=SCLK
#define LCD_SCLK_Set() rt_pin_write(SCK_PIN, PIN_HIGH)

#define LCD_MOSI_Clr() rt_pin_write(MOSI_PIN, PIN_LOW)//SDA=MOSI
#define LCD_MOSI_Set() rt_pin_write(MOSI_PIN, PIN_HIGH)

#define LCD_CS_Clr()   rt_pin_write(CS_PIN, PIN_LOW)//CS
#define LCD_CS_Set()   rt_pin_write(CS_PIN, PIN_HIGH)

#define LCD_RES_Clr()  rt_pin_write(RES_PIN, PIN_LOW)//RES
#define LCD_RES_Set()  rt_pin_write(RES_PIN, PIN_HIGH)

#define LCD_DC_Clr()   rt_pin_write(DC_PIN, PIN_LOW)//DC
#define LCD_DC_Set()   rt_pin_write(DC_PIN, PIN_HIGH)

#define LCD_BLK_Clr()  rt_pin_write(BLK_PIN, PIN_LOW)//BLK
#define LCD_BLK_Set()  rt_pin_write(BLK_PIN, PIN_HIGH)

同时把u6、u16、u32等替换成uint8_t,uint16_t,uint32_t。更新man.c,下载就成功点亮。一切还算顺利。

#include <stdint.h>
#include <rtthread.h>
#include <rtdevice.h>
#include "lcd_init.h"
#include "lcd.h"
#include "pic.h"

/* defined the LED1 pin: PB5 */
#define LED1_PIN    91


int main(void)
{
    uint32_t Speed = 200;
    float t=0;
    /* set LED1 pin mode to output */
    rt_pin_mode(LED1_PIN, PIN_MODE_OUTPUT);
    LCD_Init();//LCD初始化
    LCD_Fill(0,0,LCD_W,LCD_H,WHITE);
    LCD_ShowString(0,0,"RTTDEMO",BLUE,WHITE,32,0);
    LCD_ShowString(24,36,"N32G45XVL",RED,WHITE,16,0);
    LCD_ShowString(24,60,"LCD-W:", BROWN ,WHITE,16,0);
    LCD_ShowIntNum(72,60,LCD_W,3, BROWN ,WHITE,16);
    LCD_ShowString(24,80,"LCD_H:",RED,WHITE,16,0);
    LCD_ShowIntNum(72,80,LCD_H,3,RED,WHITE,16);
    LCD_ShowPicture(65,110,40,40,gImage_1);
    while (1)
    {
        LCD_ShowFloatNum1(20,110,t,4,BLACK,WHITE,16);
        t+=0.11;
        rt_pin_write(LED1_PIN, PIN_LOW);
        rt_thread_mdelay(Speed);
        rt_pin_write(LED1_PIN, PIN_HIGH);
        rt_thread_mdelay(Speed);
    }
}

模拟spi是速度好象不是很快,刷新的速度好慢。下面准备更新为硬件spi。

我看了一下spi输出函数,主要就是把void LCD_Writ_Bus(uint8_t dat) 更改为spi的rt_spi_send函数就行了。

于是在lcdinit.c下面增加spi初始化函数:int rt_hw_spi_config(void)

struct n32_hw_spi_cs
{
    GPIO_Module* GPIOx;
    uint32_t GPIO_Pin;
};

struct rt_spi_device *st7753_spi_dev;

int rt_hw_spi_config(void)
{
    static struct n32_hw_spi_cs  spi_cs1;
    static struct rt_spi_device spi_dev_1 ;
    rt_err_t res;
    spi_cs1.GPIO_Pin = GPIO_PIN_4;
    spi_cs1.GPIOx = GPIOA;
    rt_pin_mode(CS_PIN, PIN_MODE_OUTPUT);
    res = rt_spi_bus_attach_device(&spi_dev_1, SPI1__DEVICE_NAME, SPI1_BUS_NAME, (void*)&spi_cs1);
    if (res != RT_EOK)
    {
        rt_kprintf("rt_spi_bus_attach_device!\r\n");
        return res;
    }
    spi_dev_1.bus->owner = &spi_dev_1;
    {
        struct rt_spi_configuration cfg;
        cfg.data_width = 8;
        cfg.mode =   RT_SPI_MODE_3 | RT_SPI_MSB ;
        cfg.max_hz = 40*1000 *1000; /* 40M,SPI max 42MHz, 3-wire spi */
        if(spi_dev_1.bus->owner==RT_NULL)
        {
            rt_kprintf("RT_OK\r\n");
        }
        rt_kprintf("owner= %d\r\n",*spi_dev_1.bus->owner);
        res = rt_spi_configure(&spi_dev_1, &(cfg));
        if(res != RT_EOK)
        {
            rt_kprintf("configure spi1 ERR!\r\n");
        }

    }
    st7753_spi_dev = (struct rt_spi_device *)rt_device_find(SPI1__DEVICE_NAME);
        if(!&st7753_spi_dev)
        {
            rt_kprintf("spi1 test run failed! can't find %s device!\n", SPI1__DEVICE_NAME);
        }
    return RT_EOK;
}

INIT_DEVICE_EXPORT(rt_hw_spi_config);

这里需要注意的是st7735的模式要配置成RT_SPI_MODE_3  /* CPOL = 1, CPHA = 1 */ 。我前面配置为1-2时,数据是有输出但是屏死活不亮,后面找了数据手册才知道要配置成这个模式才能点亮。


 

最新回复

学习交流,原意帮忙的都是值得点赞的!   详情 回复 发表于 2023-1-30 10:51

回复
举报

13

帖子

0

TA的资源

一粒金砂(中级)

请问,为什么在rt-thread中就只显示个白屏;(模拟io)

一样代码在keil5中,可以正常显示呢;

点评

我的是RT_Thread Studio,应该跟你差不多的,白屏的话是没有驱动起来,先看看线接对了没有,还有就是如果手头上有逻辑分析仪,看看时序、数据对不对。  详情 回复 发表于 2022-3-9 07:10

回复

13

帖子

0

TA的资源

一粒金砂(中级)

能够共享一下,参考参考呢,非常感谢


回复

6846

帖子

11

TA的资源

版主

fly007008009 发表于 2022-3-7 19:07 能够共享一下,参考参考呢,非常感谢

可以的呀,你加我好友,或者提供邮箱都可以。

点评

附件这个是我依据 提供的工程移植到rt-thread,但奈何只是白屏; 不显示数据,能劳烦瞅瞅不,实在搞不懂了    详情 回复 发表于 2022-3-9 00:13

回复

13

帖子

0

TA的资源

一粒金砂(中级)

本帖最后由 fly007008009 于 2022-3-8 23:26 编辑
lugl4313820 发表于 2022-3-7 19:46 可以的呀,你加我好友,或者提供邮箱都可以。

发送这个邮箱吧 flyhawk007gm@gmail.com;
多谢了


 


回复

7504

帖子

2

TA的资源

五彩晶圆(高级)

spi屏的初始化看着就特别骚

个人签名

默认摸鱼,再摸鱼。2022、9、28


回复

13

帖子

0

TA的资源

一粒金砂(中级)

freebsder 发表于 2022-3-8 23:14 spi屏的初始化看着就特别骚

还行吧; 感觉都一个流程哈哈(俺是菜鸟,正在学习中)
cs片选拉低电平,上升沿发送8位数据,发送完成cs拉高;

 

现在遇到的就是keil使用使用完全正常,放到rt-thread死活不刷新就是个白屏;
非常奇怪,这位仁兄有没有遇到呢,如果可以的话,请多指教指教

 


回复

13

帖子

0

TA的资源

一粒金砂(中级)

lugl4313820 发表于 2022-3-7 19:46 可以的呀,你加我好友,或者提供邮箱都可以。

附件这个是我依据 提供的工程移植到rt-thread,但奈何只是白屏;
不显示数据,能劳烦瞅瞅不,实在搞不懂了

 

tft.7z

8.86 MB, 下载次数: 3

点评

好的,有空给你看看,就是有点折腾,最近评测好几片版子。最好是远程给你看。难拆装杜绑线呀。  详情 回复 发表于 2022-3-9 07:08

回复

6846

帖子

11

TA的资源

版主

fly007008009 发表于 2022-3-9 00:13 附件这个是我依据 提供的工程移植到rt-thread,但奈何只是白屏; 不显示数据,能劳烦瞅瞅不,实在搞不懂 ...

好的,有空给你看看,就是有点折腾,最近评测好几片版子。最好是远程给你看。难拆装杜绑线呀。


回复

6846

帖子

11

TA的资源

版主

fly007008009 发表于 2022-3-7 19:06 请问,为什么在rt-thread中就只显示个白屏;(模拟io) 一样代码在keil5中,可以正常显示呢;

我的是RT_Thread Studio,应该跟你差不多的,白屏的话是没有驱动起来,先看看线接对了没有,还有就是如果手头上有逻辑分析仪,看看时序、数据对不对。

点评

手头没有专业设备😂  详情 回复 发表于 2022-3-9 10:06

回复

13

帖子

0

TA的资源

一粒金砂(中级)

lugl4313820 发表于 2022-3-9 07:10 我的是RT_Thread Studio,应该跟你差不多的,白屏的话是没有驱动起来,先看看线接对了没有,还有就是如果 ...

数据线应该没有问题;
一样的插线使用这个【STM32- ST7735 1.8寸TFT-LCD程序 - STM32/8 】就可以正确驱动起来;


回复

13

帖子

0

TA的资源

一粒金砂(中级)

lugl4313820 发表于 2022-3-9 07:10 我的是RT_Thread Studio,应该跟你差不多的,白屏的话是没有驱动起来,先看看线接对了没有,还有就是如果 ...

手头没有专业设备😂

点评

你给的邮箱是错的flyhawk007gm@gmail.com,被退回来了。。。。  详情 回复 发表于 2022-3-9 21:22

回复

13

帖子

0

TA的资源

一粒金砂(中级)

lugl4313820 发表于 2022-3-9 07:10 我的是RT_Thread Studio,应该跟你差不多的,白屏的话是没有驱动起来,先看看线接对了没有,还有就是如果 ...

参考代码能共享一下不【邮箱: flyhawk007gm@gmail.com;】,使用beyond compare比较下哪部分不一样导致出错了;
lcd驱动部分都是参考【STM32- ST7735 1.8寸TFT-LCD程序 - STM32/8 】的;
为啥不行呢,比较奇怪

点评

 已经自己搞定; 此人不可信,言而无信;不想发就直接说  【不想发送】 我都没有QQ邮箱,哪里发送我邮箱了!!! 谷歌邮箱不行,hotmail邮箱难道也被墙了,请一开始说【不想给大家共享】    详情 回复 发表于 2022-3-17 22:25
已经发你QQ了,最好还是自己用逻辑分析,看时序,自己找到原因,这样成长比较快。  详情 回复 发表于 2022-3-9 21:19
你有没有分析一下你的时序呀?一定要有时序才行的。  详情 回复 发表于 2022-3-9 21:16

回复

6846

帖子

11

TA的资源

版主

fly007008009 发表于 2022-3-9 10:09 lugl4313820 发表于 2022-3-9 07:10 我的是RT_Thread Studio,应该跟你差不多的,白屏的话是没有驱动起来 ...

你有没有分析一下你的时序呀?一定要有时序才行的。


回复

6846

帖子

11

TA的资源

版主

fly007008009 发表于 2022-3-9 10:09 lugl4313820 发表于 2022-3-9 07:10 我的是RT_Thread Studio,应该跟你差不多的,白屏的话是没有驱动起来 ...

已经发你QQ了,最好还是自己用逻辑分析,看时序,自己找到原因,这样成长比较快。

点评

嗯嗯,您说的对,过段时间弄个逻辑分析仪,研究研究;  详情 回复 发表于 2022-3-9 21:27

回复

6846

帖子

11

TA的资源

版主

fly007008009 发表于 2022-3-9 10:06 手头没有专业设备😂

你给的邮箱是错的flyhawk007gm@gmail.com,被退回来了。。。。


回复

13

帖子

0

TA的资源

一粒金砂(中级)

lugl4313820 发表于 2022-3-9 21:22 你给的邮箱是错的flyhawk007gm@gmail.com,被退回来了。。。。

多谢多谢,发送 flyhawk007hm@hotmail.com 用微软的邮箱吧
没有使用QQ邮箱,以前单独设置密码后来就进不去了。。。


回复

13

帖子

0

TA的资源

一粒金砂(中级)

lugl4313820 发表于 2022-3-9 21:19 已经发你QQ了,最好还是自己用逻辑分析,看时序,自己找到原因,这样成长比较快。

嗯嗯,您说的对,过段时间弄个逻辑分析仪,研究研究;


回复

13

帖子

0

TA的资源

一粒金砂(中级)

fly007008009 发表于 2022-3-9 10:09 lugl4313820 发表于 2022-3-9 07:10 我的是RT_Thread Studio,应该跟你差不多的,白屏的话是没有驱动起来 ...

 已经自己搞定;
此人不可信,言而无信;不想发就直接说  【不想发送】
我都没有QQ邮箱,哪里发送我邮箱了!!!
谷歌邮箱不行,hotmail邮箱难道也被墙了,请一开始说【不想给大家共享】
 

点评

@fly007008009 通过帖子能看出楼主在努力帮忙,但是因为不是一天24小时一直盯着论坛,所以回复上可能会有延迟。既然咱们求人帮忙,咱们就好好沟通,不要一言不合就开怼,这样后续就没人敢帮忙了。或者遇到问题也可以  详情 回复 发表于 2022-3-18 11:43

回复

6846

帖子

11

TA的资源

版主

本帖最后由 lugl4313820 于 2022-3-18 11:35 编辑
fly007008009 发表于 2022-3-17 22:25  已经自己搞定; 此人不可信,言而无信;不想发就直接说  【不想发送】 我都没有QQ邮箱,哪 ...

image.png  给你发了邮箱被退回来,后面工作忙没有发给你,同时我也给你留言,让你加我好友。朋友,你到处攻击我,本来不想回答。管理员在@我,到这里跟你说一声,大家在网站上交流学习,帮与不帮,也要看看什么情况。还有,最好不要来个道德绑架。我年纪大了,什么事都遇到过,不与你计较,也希望你好自为之。最后,提升一下自己的人品,才有资格去评论别人的人品。


回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表