硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4709|回复: 3
收起左侧

[有问必答] SPI读取触摸屏的疑问。

[复制链接]

2

主题

4

回帖

10

积分

新手上路

积分
10
发表于 2014-10-11 21:31:11 | 显示全部楼层 |阅读模式
在做触摸屏实验,其中读取XPT2406触摸芯片的函数不是很懂。程序如下:

static uint16_t TSC2046_ReadAdc(uint8_t _ucCh)
{
    uint16_t usAdc;

    TSC2046_CS_0();        /* 使能TS2046的片选 */

    /*
        TSC2046 控制字(8Bit)
        Bit7   = S     起始位,必须是1
        Bit6:4 = A2-A0 模拟输入通道选择A2-A0; 共有6个通道。
        Bit3   = MODE  ADC位数选择,0 表示12Bit;1表示8Bit
        Bit2   = SER/DFR 模拟输入形式,  1表示单端输入;0表示差分输入
        Bit1:0 = PD1-PD0 掉电模式选择位
    */
    SPI_ShiftByte((1 << 7) | (_ucCh << 4));            /* 选择通道1, 测量X位置 */

    /* 读ADC结果, 12位ADC值的高位先传,前12bit有效,最后4bit填0 */
    usAdc = SPI_ShiftByte(0x00);        /* 发送的0x00可以为任意值,无意义 */
    usAdc <<= 8;
    usAdc += SPI_ShiftByte(0x00);        /* 获得12位的ADC采样值 */

    usAdc >>= 3;                        /* c */

    TSC2046_CS_1();                    /* 禁能片选 */

    return (usAdc);
}
如上,背景颜色为黄部分语句不是很懂:

疑问1:从ADC采样出来的值是12位,先读出高8位数据,然后再读出低4位数据,其中第二次读取的低字节数据最后4位为0.那为什么最后要usAdc >>= 3; 而不是向右移位4呢,不是有4个0位吗


疑问2:第一次发送数据SPI_ShiftByte((1 << 7) | (_ucCh << 4));    是不是数据发送完,SPI的接受缓存器就已经收到了这12位 AD采样值了,而后面两次SPI_ShiftByte(0x00);      作用就是分别读高位字节和地位字节而已?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107396
QQ
发表于 2014-10-12 12:53:03 | 显示全部楼层
1. 这个问题好像以前很多人问过,具体也不记得是怎么回事了,不过这么做肯定是对的,这个需要楼主看下2046的数据手册,它的高八位的第一个好像不是ADC数据,具体我也不太记得了,明天我再查下手册。
2. 不是的,这个就是SPI通讯,SPI是全双工的,读取一个bit也需要写一个bit。
回复

使用道具 举报

2

主题

4

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2014-10-13 00:52:56 | 显示全部楼层

回 eric2013 的帖子

eric2013:1. 这个问题好像以前很多人问过,具体也不记得是怎么回事了,不过这么做肯定是对的,这个需要楼主看下2046的数据手册,它的高八位的第一个好像不是ADC数据,具体我也不太记得了,明天我再查下手册。
2. 不是的,这个就是SPI通讯,SPI是全双工的,读取一个bit也需要写一个bit。 (2014-10-12 12:53) 
根据你说的,SCK时钟在不发送数据的时候是不会产生时钟脉冲的吧,所以第二次和第三次发送无意义字节00其作用是为了让SCK管脚产生脉冲,好让从设备发送数据给主机
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107396
QQ
发表于 2014-10-13 08:32:28 | 显示全部楼层

回 guanyanqin 的帖子

guanyanqin:根据你说的,SCK时钟在不发送数据的时候是不会产生时钟脉冲的吧,所以第二次和第三次发送无意义字节00其作用是为了让SCK管脚产生脉冲,好让从设备发送数据给主机 (2014-10-13 00:52) 
下载个SPI的通讯协议,看下就明白了。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-29 21:04 , Processed in 0.262623 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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