[技术问答] HC32L13x官方提供的demo中SPI例程的时钟问题

[复制链接]
 楼主| indeed嘻嘻哈哈 发表于 2021-6-11 08:45 | 显示全部楼层 |阅读模式
hc32l13x_ddl_Rev1.9.2 Lite\example\spi该历程中的程序有几个疑问:1)、例程初始化未选择和设置系统时钟频率,没有初始化默认是多少呢?选择的是什么时钟源呢?   2)、修改此demo驱动SX1278芯片时出现“while(Spi_GetStatus(M0P_SPI0, SpiTxe) == FALSE);    //等待发送缓冲器空”和“while(Spi_GetStatus(M0P_SPI0, SpiTxe) == FALSE);    //等待发送缓冲器空”死循环问题,将判断状态由“SpiTxe,SpiRxne”改为“SpiBusy”规避了死循环,但是读出的数据全都是0,怀疑问题问题出在时钟上,还请各路大神指点一二
 楼主| indeed嘻嘻哈哈 发表于 2021-6-17 10:02 | 显示全部楼层
我来结贴了!针对我的问题,查阅资料,手册最终调试成功,出现问题的原因应该是片选引脚,也重新配置了时钟之前使用的是默认的4M时钟,将时钟修改为48M设置好对应的分频系数。关于片选->手册中有这样一句话(– 在传输过程必需设置 SPIx_SSN.ssn 为 0,传输完成后必需设置 SPIx_SSN.ssn 为 1。)受此启发对片选重新设置后能实现通信,最后由于我移植的是stm32f103系列单片机的程序,时钟是72M的,HC32我配置为48M,定时器又重新修改了一下。最终实现了移植前平台的效果。
勇者无惧你和我 发表于 2021-6-11 08:47 | 显示全部楼层
这个是咋回事呢?持续关注这个帖子。
martinhu 发表于 2021-6-11 11:21 | 显示全部楼层
第一,关于时钟,用户手册的系统控制章节写明了,默认是RCH,如果什么都没配置,那么在进入main之前的systeminit.c里面有加载RCH 4MHz的语句。
第二,楼主改逻辑之前,建议多看看SPI协议和寄存器标志的意义

评论

感谢!我回去配置 一下时钟吧!  发表于 2021-6-11 13:48
两只袜子 发表于 2021-6-17 10:56 来自手机 | 显示全部楼层
哈哈,开悟就在一瞬间
NUANXIXIA 发表于 2021-9-10 11:33 | 显示全部楼层
大佬,我也是,卡在这里了,可否分享一下代码

评论

@NUANXIXIA :你不会没有使能SPI的外设时钟吧???  发表于 2021-9-14 14:03
@NUANXIXIA :读出来的数据全部为0x0E  发表于 2021-9-10 14:51
@martinhu :发送之前是拉低,发送之后拉高,可以通过while(FALSE == M0P_SPI1->STAT_f.TXE){;} while(FALSE == M0P_SPI1->STAT_f.RXNE){;} 但是数据没写进去  发表于 2021-9-10 14:32
发送之前片选要拉低,即使没有片选脚,寄存器也要设置。发送完再拉高。  发表于 2021-9-10 13:58
Alohaq 发表于 2023-10-27 08:26 | 显示全部楼层
martinhu 发表于 2021-6-11 11:21
第一,关于时钟,用户手册的系统控制章节写明了,默认是RCH,如果什么都没配置,那么在进入main之前的syste ...

如果一直寄存器nss一直拉低会怎样?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部