搜索
bottom↓
回复: 3

有硬件SPI读的示例程序吗?例如读LCD ID

[复制链接]

出0入10汤圆

发表于 2021-5-27 14:34:49 | 显示全部楼层 |阅读模式
读操作是先写一个随便一个字节进去产生时钟吗?

        u8 ReadVal;
        LCD_CS(0);
        LCD_CS(0);
        LCD_RS(1);
        SPI3->TXREG = 0x00;
        while(!(SPI3->CSTAT&0x01))
        {
               
        }
        while(!(SPI3->CSTAT&0x02))
        {
               
        }
        ReadVal = SPI3->RXREG;
        LCD_CS(0);
        LCD_CS(0);
        LCD_CS(0);
        LCD_CS(1);

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2021-5-27 15:19:39 | 显示全部楼层
void Spi_Init(void)//上电后, CS必须从高电平转换为低电平,然后才能接受新指令。
{
        SPI_InitTypeDef SPI_InitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;
  
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);//SPI时钟使能
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 ;                //PB12-PB15        NSS,SCK,MISO,MOSI
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   
        /* Push-pill output, it can be other output types */
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
               
        GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_13|GPIO_Pin_14 | GPIO_Pin_15;                //PB12-PB15        NSS,SCK,MISO,MOSI
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   
        /* Push-pill output, it can be other output types */
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
       
//        GPIO_InitStructure.GPIO_Pin =GPIO_Pin_14 | GPIO_Pin_15;                //PB12-PB15        NSS,SCK,MISO,MOSI
//        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   
//        /* Push-pill output, it can be other output types */
//        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//        GPIO_Init(GPIOB, &GPIO_InitStructure);
       
        SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;                //全双工模式
        SPI_InitStructure.SPI_Mode = SPI_Mode_Master;                                                         //主机
        SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;                                                //数据宽度
        SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;                                                                 //空闲为高
        SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;                                                         //数据采样从第二个时钟边沿开始
        SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;                                                                 //nss软件选择
        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2;                //分频
        SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;                                                  //发送数据高位在前
        SPI_InitStructure.SPI_CRCPolynomial = 7;                                                                  //CRC的7位校验码
        SPI_Init(SPI2,&SPI_InitStructure);                       
       
        SPI_Cmd(SPI2,ENABLE);
        SPI_I2S_SendData(SPI2,0xff);
        SPI_CS_H;
}

u8 SPI_Write(u8 data)//接收发送函数  环形总线
{
        u8 RECV;
       
        while(!SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_TXE));//等待发送寄存器为空
        SPI_I2S_SendData(SPI2,data);
        while(!SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_RXNE));
        RECV = SPI_I2S_ReceiveData(SPI2);
       
        return RECV;
}


我之前找到的是这个,也是网上的。是没问题的

出0入10汤圆

 楼主| 发表于 2021-5-27 15:32:44 | 显示全部楼层
爱晴海玩偶 发表于 2021-5-27 15:19
void Spi_Init(void)//上电后, CS必须从高电平转换为低电平,然后才能接受新指令。
{
        SPI_InitTypeDef SP ...

熟悉的代码,我在F103上也是这样用的,没有问题。
TK499上不行

出0入0汤圆

发表于 2021-5-27 17:57:12 | 显示全部楼层
写一个随便一个字节进去产生时钟(一般写0xFF,避免写入有效数据,导致出错),然后读取数据寄存器,就这么简单
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 06:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表