hlxe 发表于 2023-12-19 19:22:01

stm32在匹配时钟信号的情况下并行输出8位数据(硬件匹配时序)


各位大神,我想要实现stm32驱动一个外设,需要stm32并行8位的输出数据,在要在时钟的下降沿将数据写入到外设中,我之前有用GPIO模拟时钟信号,但是写数据的频率有些低,导致输出的波形频率较低,不太满足使用要求,请问有没有什么办法可以使提高写数据的频率,使得stm32在时钟的下降沿并行输出八位数据;我现在用的stm32f407这款单片机;

Doding 发表于 2023-12-19 19:27:35

F407有FSMC,支持8,16,32位并行总线,可以用dma。

tomzbj 发表于 2023-12-20 09:56:22

FSMC肯定最简单...

或者可以用DMA写GPIO, 但是M2M方式太慢, 大概得20个左右的时钟周期才能输出一次, 变通办法就是初始化成用DMA写DAC或者SPI或者别的什么外设, 但是把外设地址写成GPIO的地址. 然后用定时器触发, 定时器的一个沿触发DMA, 另一个沿作为输出时钟.

qtechzdh 发表于 2023-12-20 10:02:20

有点低,较低,提高。你能说具体的频率吗。

wshtyr 发表于 2023-12-20 10:43:01

如果时序简单,可以用TIM1触发DMA并产生时钟
DMA把数据从内存搬到GPIO的ODR寄存器

不是所有的DMA都能干这个活,具体要看手册上的总线矩阵,确认数据能走通

陆小凤之北京 发表于 2023-12-20 15:01:36

DMA+FSMC,或者仿一个FSMC。

hlxe 发表于 2023-12-24 19:34:32

qtechzdh 发表于 2023-12-20 10:02
有点低,较低,提高。你能说具体的频率吗。
(引用自4楼)

就是时钟频率要在12MHZ以上,最好是20MHZ左右

hlxe 发表于 2023-12-24 19:55:49

陆小凤之北京 发表于 2023-12-20 15:01
DMA+FSMC,或者仿一个FSMC。
(引用自6楼)

请问FSMC接我的外设并行输出8位数据,那个时序模式可以选择哪一个呀,因为我的外设的时序并没有片选信号读写信号,我看手册都是需要片选信号读写信号的。

陆小凤之北京 发表于 2023-12-25 11:57:21

hlxe 发表于 2023-12-24 19:55
请问FSMC接我的外设并行输出8位数据,那个时序模式可以选择哪一个呀,因为我的外设的时序并没有片选信号 ...
(引用自8楼)

什么外设啊,没有片选和读写就不接,只要能达到你的目的就行。外设状态变化速率很低的话,直接GPIO输出就行。
页: [1]
查看完整版本: stm32在匹配时钟信号的情况下并行输出8位数据(硬件匹配时序)