打印

为什么发上来的数据一直是0

[复制链接]
997|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jxmzzr|  楼主 | 2014-3-3 16:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
pi, spi, IO, ni, ST
现在的问题是:想用SPI读取X的坐标值(触摸屏AD值),为什么发上来的数据一直是0
#include "include.h"

#define CMD_RDX 0x90
#define CMD_RDY 0xD0

void SPI_Touch_Init(void)
{
        SPI_InitTypeDef  SPI_InitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOF, ENABLE);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_Init(GPIOF, &GPIO_InitStructure);

        SPI_TOUCH_CS_HIGH();


        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工作模式4,即CPOL = 1,
        SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;            //CPOH = 1

        SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;   

        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;   

        SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;   
        SPI_InitStructure.SPI_CRCPolynomial = 7;
        SPI_Init(SPI1, &SPI_InitStructure);

        SPI_Cmd(SPI1, ENABLE);
}

u8 Touch_WR_Byte(u8 num)   
{  
        SPI_TOUCH_CS_LOW();

        SPI_Delay(10);

        while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
        
        SPI_I2S_SendData(SPI1, num);        

        while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);
        
        return SPI_I2S_ReceiveData(SPI1);
        
        SPI_TOUCH_CS_HIGH();                                             
}
int main(void)
{        
/* --------程序里面的SYSTEM 初始化操作---------- */
        SystemInit();                                                               //SYSTEM_STM32F10X.C里面的文件
        delay_init();                                                   //延时函数初始化         
        uart_init(9600);                                                //串口初始化为9600
        NVIC_Configuration();                                        //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
/* --------HARDWARE初始化操作------------------- */
        LCD_Init();
        SPI_Touch_Init();
/* --------HARDWARE初始化结束------------------- */
        while(1)
        {        
                printf("\r\n CMD now is :%d\r\n", Touch_WR_Byte(CMD_RDX));                                
                printf("hello world");
                printf("\r\n x now is :%d\r\n", Touch_WR_Byte(0));        
                delay_ms(200);
        }
}
沙发
拿起书本| | 2014-3-6 15:11 | 只看该作者
STM32驱动触摸屏吧?楼主这个一定要注意延时的。

使用特权

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

本版积分规则

460

主题

2188

帖子

12

粉丝