OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2875|回复: 2

STM32的SPI接口应用问题?无法驱动XPT2046

[复制链接]

6

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2018-8-9
在线时间
35 小时
发表于 2018-9-22 16:00:27 | 显示全部楼层 |阅读模式
各位大神:
如题,本人使用STM32F103的SPI2 想驱动XPT2046(使用这个芯片的ADC功能),但是在SPI2配置与硬件接线均没有问题的情况下,结果依然无法驱动,自认为是最终MY_FINAL()转换函数出现了问题,但不知道问题在哪里?
另外有几点疑惑,还请各位大神帮忙看看:
1、既然使用了STM32的SPI2 接口,那么在编程时需要使用时钟吗?如下 u16 MY_FINAL(u8 cha) 函数
2、各位是否有类似的程序,让小弟借鉴借鉴,谢谢


#include "stm32f10x.h"
#include "led.h"
#include "xpt.h"
#include "delay.h"
#include "my_spi.h"

#define MY_CHANNEL 0xA4  //XPT2046通道一的控制寄存器

//AD_XPT2046转换功能函数
u16 MY_FINAL(u8 cha)
{
        u16 MY_VAL=0;
       
        MY_SCLK=0;
        MY_CS=0; //选中XPT2046
       
        SPI2_ReadWriteByte(cha);
       
//        SPI2_ReadWriteByte(0x00);
//        SPI2_ReadWriteByte(0x00);
//        SPI2_ReadWriteByte(0x00);
        delay_us(6);
       
        MY_SCLK=1;
        delay_us(1);
        MY_SCLK=0;
       
        MY_VAL |=  SPI2_ReadWriteByte( 0xff ) << 8 ;   //按照一个字节由高位到低位进行传送,所以先转换完毕的高8位需要左移
       
        MY_VAL |=  SPI2_ReadWriteByte(0xff);      //后8位直接与之前的值相或
       
        MY_VAL >>= 4 ;                //只有高12位有效,所以右移4位
       
//        AD_XPT_WRITE(cha);
//       
//        delay_us(6);//ADS7846和xpt2046效果一致;转换时间最长为6us
//               
//        delay_us(1);//delays 1us  equals _nop_()
//               
//        MY_VAL = AD_XPT_READ();
       
        MY_CS=1;
       
        return MY_VAL;
       
}

//main()函数
int main(void)
{       
         u16 YOYO_VAL;
         
         delay_init();
         LED_MY_Init();
         AD_XPT_Init_MY(); //已经包含了SPI2 的初始化
         SPI2_Init();
         
  while(1)
        {
                YOYO_VAL = MY_FINAL(MY_CHANNEL);
                if(YOYO_VAL>10) //当AD采集的等效值大于10时,LED被点亮
                {
                        LED_YE = 0;
                }
                else LED_YE = 1;
        }
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

259

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2317
金钱
2317
注册时间
2016-12-2
在线时间
354 小时
发表于 2018-9-23 21:19:58 | 显示全部楼层
1. 可以先拿没有问题的GPIO代码, 套用在您现在的引脚上, 确认硬件接线真的没有问题.
2. 拿仿真器追代码, 记录一下正确的情况, 代码每个时间, 各变数的变化大概是什么.
3. 对照改成硬件SPI
回复 支持 反对

使用道具 举报

6

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2018-8-9
在线时间
35 小时
 楼主| 发表于 2018-9-25 15:04:17 | 显示全部楼层
sammy902583 发表于 2018-9-23 21:19
1. 可以先拿没有问题的GPIO代码, 套用在您现在的引脚上, 确认硬件接线真的没有问题.
2. 拿仿真器追代码,  ...

多谢建议
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 01:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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