打印
[STM8]

有用过TSC2046或STM8 SPI的兄弟帮忙解答

[复制链接]
5645|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jgphu|  楼主 | 2010-8-6 17:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
大家好,我现在用STM8与TSC2046 进行SPI通信,读触摸屏的坐标。

现在我要端口模拟SPI已与TSC2046进行正常通信,但现在想用自有的SPI模块与其通信,但是老是不行。请教一下各位大虾。最好能提供代码供学习,谢谢!!!

我的SPI初始化:MCU为主模式,MISO,MOSI。两路全双工。

CLK_PCKENR1 |= 0x02;

SPI_CR1 = 0x10;
SPI_CR2 = 0x03;
SPI_ICR = 0x00;

SPI_CR1 |= 0x40;
沙发
jgphu|  楼主 | 2010-8-6 17:54 | 只看该作者
MCU发命令给TSC2046,2046就采样数据,这时BUSY置高,MCU提供时钟给2046。等BUSY为低后才能读数据。 现在问题是在BUSY时期,我的SPI应该做什么?

11.jpg (72.19 KB )

11.jpg

使用特权

评论回复
板凳
winloop| | 2010-8-6 18:08 | 只看该作者
SPI->DR = numeric[i];
    while(SPI_GetFlagStatus(SPI_FLAG_TXE) == RESET);

使用特权

评论回复
地板
jgphu|  楼主 | 2010-8-6 18:23 | 只看该作者
上楼这个兄弟只是告诉我发数据。。这个我明白。

SPI_CS 是定义了端口输出。控制2046,自身作主模式用软件控制。
unsigned char temp;
void Read_2046(void)
{
       SPI_CS = 0;   //MCU主模式是软件控制,这只脚控制2046的CS。
     SPI_DR = 0X90;
     while(!(SPI_SR & 0x20));
        接下来就是BUSY等待了,这个时候时钟不能停的,看上图。这个地方我不知道写

     ????
然后读数据
    SPI_DR = 0x00;
     while(!(SPI_SR & 0x20));
     temp = SPI_DR;

}

使用特权

评论回复
5
jgphu|  楼主 | 2010-8-6 19:36 | 只看该作者
while(!(SPI_SR & 0x20));

这个写错了。应该是  while(!(SPI_SR & 0x02));

各位大虾帮帮忙。

使用特权

评论回复
6
jgphu|  楼主 | 2010-8-7 09:42 | 只看该作者
香水城大虾,请教一下。

使用特权

评论回复
7
香水城| | 2010-8-7 09:58 | 只看该作者
猜想BUSY信号是从设备控制的。

如果是这样的话,这不是常用的SPI协议,无法直接用STM8的SPI模块实现。一种可行的方法是,在BUSY为高时,用程序语句翻转时钟信号,并监视BUSY信号,然后在BUSY变低后再用SPI模块操作。

使用特权

评论回复
8
jgphu|  楼主 | 2010-8-7 10:12 | 只看该作者
BUSY位一般带SPI的芯片都会带这个位,表示从设备忙,不交换数据。

而2046这个芯片,我发指令给它,2046芯片ADC采样,转换。这个时间采样,转换时间它会使从设备BUSY。
同时主设备这个时候不能断了时钟。直到BUSY为低电平,MCU才可读从设备的数据。

按香水城大虾的说法,我是不是要这样做:
1。起动SPI,发指令给从机,关闭SPI;
2。将SPI_CLK端口模拟输出时间,等待BUSY位为低电平;
3。再起动SPI,读从机ADC数据。

使用特权

评论回复
9
香水城| | 2010-8-7 10:25 | 只看该作者
BUSY位一般带SPI的芯片都会带这个位,表示从设备忙,不交换数据。

而2046这个芯片,我发指令给它,2046芯片ADC采样,转换。这个时间采样,转换时间它会使从设备BUSY。
同时主设备这个时候不能断了时钟。直到BUSY为低电平,MCU才可读从设备的数据。

按香水城大虾的说法,我是不是要这样做:
1。起动SPI,发指令给从机,关闭SPI;
2。将SPI_CLK端口模拟输出时间,等待BUSY位为低电平;
3。再起动SPI,读从机ADC数据。
jgphu 发表于 2010-8-7 10:12


基本就是这样。

你说“BUSY位一般带SPI的芯片都会带这个位”,能再多举几个例子吗?不要只说一个厂家的,最好能不同厂家的不同功能的产品,谢谢。

使用特权

评论回复
10
jgphu|  楼主 | 2010-8-9 09:55 | 只看该作者
比如:MzLH01-12864模块。就采用SPI通信,带BUSY位

QQ截图未命名1.jpg (29.35 KB )

QQ截图未命名1.jpg

QQ截图未命名2.jpg (16.4 KB )

QQ截图未命名2.jpg

使用特权

评论回复
11
sfgenius| | 2013-3-12 17:27 | 只看该作者
你好

TSC2046IRGVR 2500/REEL TI QFN16 1140+


公司进口原装现货 50K



有需要可以找我们  合冠电子  邵R  15989561287

使用特权

评论回复
12
iCreate| | 2013-3-16 14:59 | 只看该作者
可参考风驰的例程

使用特权

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

本版积分规则

7

主题

642

帖子

2

粉丝