打印
[AT32F403/403A]

AT32F435硬件SPI驱动TFT屏,无法正常驱动

[复制链接]
840|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
scyangjunjie|  楼主 | 2023-3-13 17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 scyangjunjie 于 2023-3-13 17:34 编辑

芯片用的是AT32F435VGSPI2只挂了一个TFT屏
引脚定义如下
PB13 SCK
PC2 MISO
PC3 MOSI
PB12 CS


问题现象:示波器能观察到输出时序,但是TFT无法显示,尝试调整分频系数,还是无法显示
尝试修改:将硬件SPI换成GPIO软件模拟SPI,就能正常显示(没有用到MISO引脚读入,纯写入操作)各位帮忙看看。

代码如下
#include "stdio.h"
#include "bsp_spi.h"
  spi_init_type spi_init_struct;


static void spi_gpio_config(void);
/**
  * @brief  spi configuration.
  * @param  none
  * @retval none
  */
void spi_config(void)
{

  spi_gpio_config();
  crm_periph_clock_enable(CRM_SPI2_PERIPH_CLOCK, TRUE);
  spi_default_para_init(&spi_init_struct);
  spi_init_struct.transmission_mode = SPI_TRANSMIT_FULL_DUPLEX;
  spi_init_struct.master_slave_mode = SPI_MODE_MASTER;
  spi_init_struct.mclk_freq_division = SPI_MCLK_DIV_64;
  spi_init_struct.first_bit_transmission = SPI_FIRST_BIT_MSB;
  spi_init_struct.frame_bit_num = SPI_FRAME_8BIT;
  spi_init_struct.clock_polarity = SPI_CLOCK_POLARITY_LOW;
  spi_init_struct.clock_phase = SPI_CLOCK_PHASE_2EDGE;
  spi_init_struct.cs_mode_selection = SPI_CS_SOFTWARE_MODE;
  spi_init(SPI2, &spi_init_struct);

  spi_enable(SPI2, TRUE);




}
/**
  * @brief  gpio configuration.
  * @param  none
  * @retval none
  */
static void spi_gpio_config(void)
{
  gpio_init_type gpio_initstructure,gpio_initstructure1;
  crm_periph_clock_enable(CRM_GPIOC_PERIPH_CLOCK, TRUE);
  crm_periph_clock_enable(CRM_GPIOB_PERIPH_CLOCK, TRUE);
  gpio_default_para_init(&gpio_initstructure);

  /* spi2 sck pin */
  gpio_initstructure.gpio_out_type       = GPIO_OUTPUT_PUSH_PULL;
  gpio_initstructure.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
  gpio_initstructure.gpio_pull           = GPIO_PULL_DOWN;
  gpio_initstructure.gpio_mode           = GPIO_MODE_MUX;
  gpio_initstructure.gpio_pins = GPIO_PINS_13;
  gpio_init(GPIOB, &gpio_initstructure);
  gpio_pin_mux_config(GPIOB, GPIO_PINS_SOURCE13, GPIO_MUX_5);

  /* spi2 miso pin */
  gpio_initstructure.gpio_pull           = GPIO_PULL_UP;
  gpio_initstructure.gpio_pins           = GPIO_PINS_2;
    gpio_initstructure.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
    gpio_initstructure.gpio_mode           = GPIO_MODE_MUX;
  gpio_init(GPIOC, &gpio_initstructure);
  gpio_pin_mux_config(GPIOC, GPIO_PINS_SOURCE2, GPIO_MUX_5);

  /* spi2 mosi pin */
  gpio_initstructure1.gpio_out_type       = GPIO_OUTPUT_PUSH_PULL;
  gpio_initstructure1.gpio_pull           = GPIO_PULL_UP;
  gpio_initstructure1.gpio_pins           = GPIO_PINS_3;
  gpio_initstructure1.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
  gpio_initstructure1.gpio_mode           = GPIO_MODE_MUX;
  gpio_init(GPIOC, &gpio_initstructure1);
  gpio_pin_mux_config(GPIOC, GPIO_PINS_SOURCE3, GPIO_MUX_5);

  /////////////////////////////////////////////////////////////////////////  
  /* spi2 cs pin */
  gpio_initstructure.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
  gpio_initstructure.gpio_out_type  = GPIO_OUTPUT_PUSH_PULL;
  gpio_initstructure.gpio_mode = GPIO_MODE_OUTPUT;
  gpio_initstructure.gpio_pins = GPIO_PINS_12;
  gpio_initstructure.gpio_pull = GPIO_PULL_NONE;
  gpio_init(GPIOB, &gpio_initstructure);

}

void spi2SendByte(uint8_t byte)
{

    while(spi_i2s_flag_get(SPI2, SPI_I2S_TDBE_FLAG) == RESET);
    spi_i2s_data_transmit(SPI2,byte);  
}


这部分是模拟的时序
就用了SCK  MOSI
void SPI2SendByte(uint8_t byte)
{
        unsigned char i,Result = 0;;
        for(i=0;i<8;i++)
        {
                if(byte & 0x80)        SPI_MOSI(1);
                else SPI_MOSI(0);
                byte <<= 1;
               
                SPI_CLK(0);
                SPI_CLK(1);
               
                Result <<= 1;
                //if(SPI_MISO()) Result |= 0x01;
        }
        SPI_CLK(0);
        //return(Result);
}


使用特权

评论回复
沙发
muyichuan2012| | 2023-3-13 17:43 | 只看该作者
SPI驱动LCD可参考这个demo

SC0110_AT32_LVGL_Demo_On_SPI_LCD_V2.0.0 (1).zip

25.4 MB

使用特权

评论回复
板凳
eefas| | 2023-4-4 22:05 | 只看该作者
这个是spi的速度的问题吧。              

使用特权

评论回复
地板
xiaoyaodz| | 2023-4-4 22:17 | 只看该作者
官网的代码移植过来的吗              

使用特权

评论回复
5
wwppd| | 2023-4-4 22:30 | 只看该作者
使用的是硬件spi的吗              

使用特权

评论回复
6
cemaj| | 2023-4-7 09:37 | 只看该作者
你看看官网提供的代码是怎么实现的

使用特权

评论回复
7
ccook11| | 2023-4-7 09:43 | 只看该作者
网上有很多的教程的。              

使用特权

评论回复
8
qiufengsd| | 2023-4-7 10:08 | 只看该作者
硬件SPI需要读取数据的              

使用特权

评论回复
9
loutin| | 2023-4-7 18:14 | 只看该作者
是不是屏幕跟不上速度呢              

使用特权

评论回复
10
phoenixwhite| | 2023-4-7 23:20 | 只看该作者
使用模拟spi操作tft怎么样              

使用特权

评论回复
11
nomomy| | 2023-4-7 23:40 | 只看该作者
软件模拟SPI,这个可移植性很高。

使用特权

评论回复
评论
这是小辛啊 2023-6-5 18:56 回复TA
能否分享一下代码 
12
skys2000| | 2023-4-29 10:02 | 只看该作者
你这是9位spi吧,没有dc脚?不过也是可以硬件spi的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

14

帖子

1

粉丝