完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我在主模式下使用 HSPI 外围设备将数据传输到另一个设备。我想使用 26.67MHz 的时钟频率(即 80MHz 除以 3)。其他设备可以处理该速度,但是从 SCLK 到在 MISO 上输出其数据的延迟可能高达 15ns。
我遇到的问题是,当对 SPI_CLOCK 寄存器进行编程以将系统时钟除以 3 时,我只能让它输出时钟高电平 12.5ns 和低电平 25ns。我使用的是 SPI 模式 1,因此数据在前沿发生变化,在后沿被计时为 ni。为了处理 15ns 的延迟,我需要时钟是相反的,即高电平持续 25ns,低电平持续 12.5ns。 但它没有提供设置分频因子 3 的替代方法。 我尝试了 SPI1CLK 寄存器的各种设置: SPI1CLK = (2 << 12) | (2 << 6) | 2; // 失败,时钟保持高电平 SPI1CLK = (2 << 12) | (2 << 6) | 1; // 失败,时钟变为 HLHLL SPI1CLK = (2 << 12) | (2 << 6) | 0; // 12.5ns 高,25ns 低 SPI1CLK = (2 << 12) | (1 << 6) | 2; // 12.5ns 高,25ns 低 SPI1CLK = (2 << 12) | (1 << 6) | 1; // 失败,时钟为 80MHz SPI1CLK = (2 << 12) | (1 << 6) | 0; // 失败,时钟变为 HLHLL SPI1CLK = (2 << 12) | (0 << 6) | 2; // 失败,时钟变为 HLHLL SPI1CLK = (2 << 12) | (0 << 6) | 1; // 12.5ns 高, 25ns 低SPI1CLK = (2 << 12) | (0 << 6) | 0; // 失败,时钟为 80MHz 我错过了什么吗? 我想我可以通过切换到 SPI 模式 0 来解决这个问题,这样数据在下降沿发生变化并在上升沿计时。但是当我这样做时(通过清除寄存器 SPI_USER 的第 6 位和第 7 位而不是设置它们),时钟变为 25ns 高和 12.5ns 低,这违背了更改为模式 1 的目的。另外,谁能告诉我什么 位7的SPI_USER呢?技术参考中没有记录,但是当选择模式 1 时,驱动程序设置(连同位 6)。 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
920 浏览 1 评论
552浏览 6评论
461浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
445浏览 5评论
446浏览 4评论
417浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 06:23 , Processed in 0.823055 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号