您的位置 首页 汽车

stm32的swd接口的烧写协议是否奇怪的呢?

需要用一台好的示波器来抓才能有足够的存储深度,保证你能够过滤掉那个该死的50clock。按照Arm的手册,每次转换发送方都需要一个TNR但是我…

需求用一台好的示波器来抓才干有满足的存储深度,确保你能够过滤掉那个该死的50clock。

依照Arm的手册,每次转化发送方都需求一个TNR可是我调查JLINK的波形却没有那个该死的TNR。

手册中说异步SWD需求,同步不需求-或许相反,可是我没有找到关于同步异步的描绘。

权且不论他,横竖现在疏忽掉TNR就能够读到该死IDR。

别的JLINK的复位时序很古怪,大致是

70clk High,0xe79e(留意,SWD是LSB First),

70clk High,0xedb6(这儿很古怪,找不到描绘),

70clkHigh,16clk Low,0xa5,

留意这儿依照协议应该是TNR位-可是没有实践观测到这个位,

0b100(ACK-OK),0xba01477……

实践测验,不额定添加那个古怪的0xedb6也能够照旧读出IDR。

别的要留意,设备端的数据最哈哦在CLK的下降沿读取,或许上升沿往后延时1/2bit后读取。

假如想要深究,能够去sourceforge.net去下载SWD Lib,以及openOCD,两者对照着来会很便利。

利用好bitband写程序会很舒畅,尤其是处理SWD的位流,一个int32指针跳起来很爽,而且是LSB First的结构。

彻底没有任何妨碍的。

别的发现在读IDR后,其他的读写指令的ACK后边,SWDIO会有两个bits的缓慢上升波形,

而且在clk的下降沿被Target拉底,依照格局硬套的话,这两个位应该疏忽掉。

现在还没发现关于这两个位的说法。

有的时分能够看到当JLink读取信息的最终会把本该由Target发送的parity拉低,疏忽掉。

还有需求留意的是,如同除了读IDR,CTRL,ABOUT这三个寄存器外,其他的寄存器读取都有一个数据帧的推迟。

比方你建议第一个读取贞,读到的数据没有意义。

第二个读取帧,读到的是第一次的地址对应的数据,顺次类推。

硬件上,SWDIO的上拉要满足强,否则上升沿或许不行峻峭,我现在用的是2.2k,还将就。

看到SWD LIB的源码晒干是依照8位读写,32位读写的方法来做的。

也便是说,只需操控好SWCLK,而且能够确保不丢掉任何SWDIO位信息,用SPI也能够模拟出SWD的时序。

这部分参阅了SourceForge的LibSwd项目,该项目是开源的,写的很谨慎,代码风格也很好,激烈我们下来看看。

原始代码是四个函数,读,写,8,32.我归结到两个函数,用了bitband结构所以进口就简略了一些,缓冲区和位数即可

int iLibSwdMosi(unsigned int* pBits,unsigned int iLen){unsigned int        i;for(i=0;i

看到return(0)你想到了什么?

嘿嘿,原本我是选用定时器来操控clk的,这样就需求考虑程序运转犯错的回来代码。

后来发现这样很傻,就该成死等了。

这样就不需求回来反常信息了,可是为了坚持形式上的一致,函数仍是带有回来值的姿态。hoho

这儿是延时函数,大写的量是宏界说

int iLibSwdDelay(unsigned int iDly){unsigned int        i,k;for(i=0;i

这儿是切换到SWD形式而且读取IDR的函数。

int iLibSwdSwitch2SWD(void){unsigned int i;for(i=0;i

假如成功读取会回来一个指针,这个指针对应的缓冲区是预先申请好的,我们程序没有改完,所以这儿还不太美观。我们自己发挥吧。

上面用/**/屏蔽部分便是我说的JLINK波形中很古怪的当地,屏蔽和不屏蔽在读取IDR时如同没什么别离。

不知道JLINK用来做什么的。有知道的么?

有时分为了差异是Host仍是Target送出的bit,能够在时序上做一点修整。

Target总是在Clk的上升沿送出数据,Host能够在上升沿前面一点送出数据,

这样就能够经过示波器来差异到底是Target仍是Host发送的0

别的,手册中有说到,在每个数据帧后边附加几个额定的clk周期。

JLink的波形上也的确有这样的表现。不过如同不是总呈现。

暂时没发现这块的影响,或许是通用性的考虑吧

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/264970.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部