Other Parts Discussed in Thread: TIDA-01555
主题中讨论的其他器件:TIDA-01555
大家好、
我们是否能够在 PRU-ICSS 上实现4/8位主器件 QSPI? QSPI 时钟速度是多少?
我找到了以下 TI 参考设计、其中显示了我们的 PRU-ICSS 作为 SPI 主器件: http://www.ti.com/tool/TIDEP0033 我们是否有适用于 QSPI 的器件?
此致、
Akash Patel
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Other Parts Discussed in Thread: TIDA-01555
大家好、
我们是否能够在 PRU-ICSS 上实现4/8位主器件 QSPI? QSPI 时钟速度是多少?
我找到了以下 TI 参考设计、其中显示了我们的 PRU-ICSS 作为 SPI 主器件: http://www.ti.com/tool/TIDEP0033 我们是否有适用于 QSPI 的器件?
此致、
Akash Patel
您好、Akash、
对于所有读者、请 注意、此演练只是一个示例。 客户负责设计自己的实现方案。 TI 既不设计 定制用例、也不编写定制代码。
PRU 时钟为200MHz、因此10MHz SPI 时钟需要每个 SPI 时钟20个 PRU 时钟、11.11MHz SPI 时钟需要每个 SPI 时钟18个 PRU 时钟等 该代码是针对10MHz SPI 时钟编写的。 如果使用的 SPI 更少、每个 CONFIG_CYCLE / READ_CYCLE 将调用 CONFIG_BIT 的次数更少、从而实现更少的 PRU 时钟周期和更快的 SPI 时钟。
SPI 实现设计人员决定使用一个 PRU 来控制接口。 他们决定要在 PRU 中"打包"和"解压缩" SPI 值、而不是在其他地方进行处理-打包/解压缩是在 CONFIG_CYCLE / READ_CYCLE 中完成的。 其他注意事项:SPI 时钟的高/低脉冲宽度需要对称、它们希望用于读取的周期数与用于写入的周期数相匹配。
我在下面的系统设计人员 PRU 代码片段中添加了注释、以解释时序。
CONFIG_CYCLE 15;在每个 SPI 上串行发送16个配置位(eacg CONFIG_CYCLE 发送一个位) CONFIG_CYCLE 14;每个 SPI 时钟周期发送一个位 CONFIG_CYCLE 13; 因此1 CONFIG_CYCLE = 20 PRU CLKS CONFIG_CYCLE 12 CONFIG_CYCLE 11 CONFIG_CYCLE 10 CONFIG_CYCLE 9 CONFIG_CYCLE 8 CONFIG_CYCLE 7 CONFIG_CYCLE 6 CONFIG_CYCLE 4 CONFIG_CYCLE 3 CONFIG_CYCLE 1 CONFIG_CYCLE 0 nop;每个 nop 1个 PRU clk nop nop nop nop nop nop nop nop nop nop nop nop nop nop clock_high;这需要1个 PRU clk nop nop nop nop nop nop nop nop nop nop;我们将这个 PRU clk 18称为20 clk 周期 ;从 ADC 读取数据,并将其放入结果寄存器,一次一个周期 READ_CYCLE 15;从每个 SPI READ_CYCLE 14读取16位; 1 READ_CYCLE = 20 PRU CLKS READ_CYCLE 13 READ_CYCLE 12 READ_CYCLE 11 READ_CYCLE 10 READ_CYCLE 9 READ_CYCLE 8 READ_CYCLE 7 READ_CYCLE 6 READ_CYCLE 5 READ_CYCLE 3 READ_CYCLE 2 READ_CYCLE 1 READ_CYCLE 0 CONFIG_CYCLE.MACRO BIT MOVR8、R9;1 PRU_CONFIG_CONFIG 1 、ADCLK_1、ADCLK_CONFIG 1、ADCLK_1、ADCLK_1 2 PRU CLKS CONFIG_BIT ADC2_CONFIG_REG、BIT、MOSI2_Pin CONFIG_BIT ADC3_CONFIG_REG、BIT、MOSI3_Pin CONFIG_BIT ADC4_CONFIG_REG、 bit、mosi4_pin clock_high;这是第10个 PRU clk CONFIG_BIT adc5_config_reg、bit、mosi5_pin CONFIG_bit adc6_CONFIG_reg、bit、mosi6_pin movr30、 R8;1 PRU clk nop;可以删除这两个顶部的 NOP 以获得18 PRU CLKS = 11.11MHz SPI clk nop;请参阅上面 的 nop nop;SPI 在将 clk 切换为低电平之前至少需要1 nOP,以满足设置 时钟低电平; 这是 CONFIG_CYCLE .endm READ_CYCLE.macro bit mov r11、R31中的第20个 PRU 时钟;1个 PRU 时钟(clk 19 of 20) clock_low;1个 PRU 时钟(CLK 20 of 20) read_bit ADC1_result_reg、bit、miso1_pin; 2 PRU CLKS (clk 1 of 20) read_bit ADC2_result_reg、bit、miso2_pin read_bit ADC3_result_reg、bit、miso3_pin read_bit adc4_result_reg、 BIT、MISO 4_Pin NOP CLOCK_HIGH;(PRU clk 10 of 20) READ_BIT ADC5_RESULT_REG、BIT、MISO 5_Pin READ_BIT ADC6_RESULT_REG、BIT、MISO 6_Pin NOP; 这两个 NOP 可被移除以获得18 PRU CLKS/cycle = 11.11MHz nop;请参阅上面 的 nop nop;(PRU clk 18 of 20) .endm
不同的代码实现可能 产生不同的最大时钟速率。
此致、
Nick