查看: 4875|回复: 7

[求助] 直接操作KE06芯片SPI模块的波特率寄存器(SPI_BR)测试有问题

[复制链接]

该用户从未签到

1

主题

5

帖子

0

注册会员

Rank: 2

积分
55
最后登录
2017-3-14
发表于 2017-2-21 17:07:51 | 显示全部楼层 |阅读模式
求助~~~~求助~~~
直接操作KE06芯片SPI模块的波特率寄存器(SPI_BR)测试出现问题,达不到理论上的波特率。SPI_BR=0x41(1M波特率)    实际测试正常,接近理论值。
SPI_BR=0x40(2M波特率)    实际测试正常,接近理论值。

SPI_BR=0x30(2.5M波特率) 和SPI_BR=0x20(3.33M波特率)    实际测试出现问题,这两个的传输时长一样。但是,SPI_BR(波特率)寄存器内的值是不同的!!!!!!!

求大神解答~~~~
我知道答案 目前已有7人回答
回复

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24866
最后登录
2025-7-18
发表于 2017-2-22 17:43:30 | 显示全部楼层
楼主你好!不知道你的bus clock是多少?20Mhz吗?
根据你的配置:
1. BR=0X30
00110000
SPR=0
SPPR=3
baudrate=bus/(SPPR + 1) × 2(SPR + 1)=20M/(4*2)=2.5Mhz.
2. br=0x20
00100000
SPR=0
SPPR=2
baudrate=bus/(SPPR + 1) × 2(SPR + 1)=20M/(3*2)=3.3Mhz.

你说测试出来的传输时长一样,那么有没有用示波器抓下SPI_SCK的频率,看看各为多少?
可以把测试波形也放出来,我看看。
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

5

帖子

0

注册会员

Rank: 2

积分
55
最后登录
2017-3-14
 楼主| 发表于 2017-2-23 09:18:18 | 显示全部楼层
小恩GG 发表于 2017-2-22 17:43
楼主你好!不知道你的bus clock是多少?20Mhz吗?
根据你的配置:
1. BR=0X30

总线时钟是20MHz,没有抓取SPI_SCK波形进行查看,这就进行抓取,谢谢~~
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

5

帖子

0

注册会员

Rank: 2

积分
55
最后登录
2017-3-14
 楼主| 发表于 2017-2-23 09:21:10 | 显示全部楼层
LSW9069 发表于 2017-2-23 09:18
总线时钟是20MHz,没有抓取SPI_SCK波形进行查看,这就进行抓取,谢谢~~

我还有个情况忘记说了,我的SPI外接了一个最大支持5MHz的EEPROM
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

5

帖子

0

注册会员

Rank: 2

积分
55
最后登录
2017-3-14
 楼主| 发表于 2017-2-23 10:23:48 | 显示全部楼层
小恩GG 发表于 2017-2-22 17:43
楼主你好!不知道你的bus clock是多少?20Mhz吗?
根据你的配置:
1. BR=0X30

抓取了SPI_SCK在BR=0X20(3.33M)和BR=0X30(2.5M)的波形,波特率确实已经改变了。又测了数据传输时长还是一样。BR=0X20截取的波形时间间隔是2.3us;BR=0X30截取的波形时间间隔是3.0us.
我只保存了BR=0X20时的图。再去实验室有点远,我把测试情况说下吧。
您看,可能是因为什么造成这种情况。

BR=0X20

BR=0X20
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24866
最后登录
2025-7-18
发表于 2017-2-23 12:06:01 | 显示全部楼层
LSW9069 发表于 2017-2-23 10:23
抓取了SPI_SCK在BR=0X20(3.33M)和BR=0X30(2.5M)的波形,波特率确实已经改变了。又测了数据传输时长还 ...

楼主你好!
SPI波特率的定义就是SCK的时钟bit rate。
所以,你要查看波特率是否改变,只要看SCK的时钟频率。
至于你说的整个数据传输长,我不知道你指的是那一段时间,是一个字节的传输时间,还是一桢数据到另外一桢数据的时间?
关键要看一个字节的传输时间是否一样。如果波特率不一样,一个字节的传输时间肯定是不一样的。
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

5

帖子

0

注册会员

Rank: 2

积分
55
最后登录
2017-3-14
 楼主| 发表于 2017-2-23 15:27:15 | 显示全部楼层
小恩GG 发表于 2017-2-23 12:06
楼主你好!
SPI波特率的定义就是SCK的时钟bit rate。
所以,你要查看波特率是否改变,只要看SCK的时钟频 ...

恩,好的。我测试的是多个字节。我后面测试单个字节的传输时长看下,有问题或结果,再来请教
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24866
最后登录
2025-7-18
发表于 2017-2-23 16:46:08 | 显示全部楼层
LSW9069 发表于 2017-2-23 15:27
恩,好的。我测试的是多个字节。我后面测试单个字节的传输时长看下,有问题或结果,再来请教 ...

你的问题应该多个字节中间的延时不一样导致的。
比如定时触发SPI传输,那么如果波特率在两次定时发送SPI数据之间,你测试一桢数据到第二帧数据之间的时间当然一样。这样测试是不准确的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-19 09:01 , Processed in 0.105068 second(s), 29 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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