打印

STM32x ISP 速度问题

[复制链接]
2764|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
simon21ic|  楼主 | 2008-6-23 20:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
调用SPI_I2S_SendData后,用逻辑分析仪看了一下波形,等待SPI_I2S_FLAG_BSY清零的时间好像比较长。
我使用36M的APB1总线驱动SPI2,发现等待的时间为1.22us,如果去掉程序的的检测SPI_I2S_FLAG_BSY清零的代码的话,等待时间为500ns,但数据出错。
上述的等待时间是波形上,第一个8位数据发送完毕到第二个8位数据开始发送的时间。

我的代码:
static uint8 JTAG_TAP_HS_Operate(uint8 tdi,uint8 tms)
{
    uint8 ret;

    JTAG_TAP_HS_WaitReady();// 等待完成
    ret = SPI_I2S_ReceiveData(JTAG_TAP_HS_SPI_M);

    SPI_I2S_SendData(JTAG_TAP_HS_SPI_S,tms);
    SPI_I2S_SendData(JTAG_TAP_HS_SPI_M,tdi);

    return ret;
}

这个时间还能否进一步缩短的?
我测试过超频总线速度到72M,这个时间可以进一步缩短,但如果小于1us的话,比较容易出错
沙发
Swd21ic| | 2008-6-23 22:00 | 只看该作者

RE

您是指的两个SendData间的时间缩小吗?
SPI_I2S_SendData(JTAG_TAP_HS_SPI_S,tms);
SPI_I2S_SendData(JTAG_TAP_HS_SPI_M,tdi);

STM32不熟悉,不过以前做AT91的时候老出现这种问题.

是由于MCU执行指令的速度相对SPI(I2S)的波特率慢了点.当去调用第2个Send函数时,
硬件已经将数据发送完毕.

如果想要连续的时钟,1)在波特率不变的情况下提供系统时钟
                   2)在系统时钟不变的情况下降低波特率..

不知道您是不是指这个问题..

使用特权

评论回复
板凳
香水城| | 2008-6-23 22:27 | 只看该作者

如果需要有效地、优化地控制外设的时序,请不要使用提供

这是因为为了适应广泛的需求,固件库中的函数总是有很多的额外操作,这些额外的操作占用了很多CPU时间,因此造成执行效率的降低。

对于楼主这种较为优化的时序要求,最好的办法是直接使用对寄存器编程,这样才能保证较好的时序响应。

使用特权

评论回复
地板
simon21ic|  楼主 | 2008-6-23 23:50 | 只看该作者

看来LS两位没明白我的意思

程序中需要优化性能的地方都没有使用库

我是指JTAG_TAP_HS_WaitReady();需要等待的时间,程序中如果去掉这句的话,波形中的延时将为500ns左右,也就是说程序中2次发送SPI数据的代码需要时间大概为500ns,而如果要正常操作,需要等待额外的522ns,使得可以读到正确的数据。这时程序的优化已经没有意义了。

#define JTAG_TAP_HS_WaitReady()        while(SPI_I2S_GetFlagStatus(JTAG_TAP_HS_SPI_M,SPI_I2S_FLAG_BSY) == SET)
改为检测SPI_I2S_FLAG_RXNE的话,效果差不多

这个代码是用2个SPI接口实现一个JTAG接口的核心代码,调用JTAG_TAP_HS_Operate一次,这进行8位的数据操作。
SPI_I2S_SendData(JTAG_TAP_HS_SPI_S,tms);
SPI_I2S_SendData(JTAG_TAP_HS_SPI_M,tdi);
这里操作了这2个SPI接口,一个主模式,一个从模式。

使用特权

评论回复
5
香水城| | 2008-6-24 07:57 | 只看该作者

在等待发送完毕至发送数据之间还有其他操作

①   JTAG_TAP_HS_WaitReady();// 等待完成
②   ret = SPI_I2S_ReceiveData(JTAG_TAP_HS_SPI_M);
③   SPI_I2S_SendData(JTAG_TAP_HS_SPI_S,tms);
④   SPI_I2S_SendData(JTAG_TAP_HS_SPI_M,tdi);

①结束之后,需要执行②,才能到达③;而执行②不会产生时钟脉冲,执行③后才能看到输出的时钟脉冲。

试试去掉②。

使用特权

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

本版积分规则

266

主题

2597

帖子

104

粉丝