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.

[参考译文] CCS/AM3358:PRU R31位16问题

Guru**** 2587365 points
Other Parts Discussed in Thread: AM3358

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/592672/ccs-am3358-pru-r31-bit-16-issue

器件型号:AM3358

工具/软件:Code Composer Studio

你好!

我使用 AM3358从 ADC 采集数据、但_R31寄存器位16始终为零!

引脚复用配置如下

PRU_PRU_PINS:pinmux_PRU_PRU_PINS{// PRU 引脚模式
pinctrl-single、pins =<
0x190 0x26 /*(PIN_INPUT | MUX_MODE5)(A13) McASP0_aclkx.pr1_pru0_PRU_R31[0]*
/ 0x194 0x26 /*(PIN_INPUT | MUX_MODE5)(B13) McASP0_pru0_PRU_R31*
(0xPRU_PRU_0_PRU_R12* 0x26_MR0_PRU_PRU_IN0*

(PIN_INPUT | MUX_MODE5)(B12) McASP0_aclkr.pr1_pru0_PRU_R31[4]*/
0x1a4 0x26 //(PIN_INPUT | MUX_MODE5)(C13) McASP0_pru0_PRU_R31*

(0x1u_MR0*
)*(0x14_MR0_MR1*) (F17



) mmc0_data3.pr1_pru0_pru0_pru0_pru_R31[8]*/ 0x0f4 0x26 //(PIN_INPUT | MUX_MODE5)(F18) mmc0_data2.pr1_pru0_pru0_pru0_r31[0x10_mc12_mpru_mu0_mu20_mu_mu0_mu_mu012*(0xc12_mpru_mu_mu0_mu20_mu_mpru_mu_mu0_mu_mu20_mu_mu20_mu_mu_mu2012*
(PIN_INPUT | MUX_MODE5)(G18) mmc0_cmd.pr1_pru0_PRU_R31[13]*/
0x038 0x26 /*(PIN_INPUT | MUX_MODE5)(V13) GPMC_ad14.pr1_PRU_R31[14]*(PIN_DRU015_MR1*)(
0x14_PRU_INTRU15_PRU_14_PRU1.14_PRU_U_PRU1.14_PRU_U_INTR16*
)*(0x14_PRU_U_PRU1.14_PRU1.14_PRU_UMR1*
>;
}; 

Cat $Pins
引脚109 (44e109b4.0) 00000026 pinctrl-single 

如果我在 器件树中将引脚0x1b4配置为 GPIO  

0x1b4 0x27 

更低

Echo 20 >/sys/class/gpio/export 

并对 D14 ZCZ 焊球施加3.3V 电压、我从 gpio20/value 文件中读取1

但是、当我将引脚多路复用器切换到 PRU 时、结果为0。

即使我将 pinmux 设置为上拉模式0x36 (在0x1b4引脚偏移的偏离树中)读取_R31寄存器返回零

所有其他16位(_R31[0:15]只是正常)问题仅与_R31[16]有关

PRU 的程序在 CCS 中使用 PRU 编译器2.1.4在 C 上编写

#define data ((uint16_t)(__R31 >> 3))//Data reg
#define PSYNC(__R31 & 1<<0)//PSYNC 引脚
#define VSYNC (_R31和1 << 1) //VSYNC 引脚
#define HSYNC(__R31 & 1<<2)//HSYNC 引脚

while (!VSYNC){}
while (VSYNC)
{uint16_t*
Loc =(uint16_t*) imagecur.cur.cur.;
while (!HSYNC){}while
(HSYNC){}+Psum=}/*ydata








=(}/ycur.}+}/ybul.al.al.al.al.al.al.al.al.al.al.al.al.al.al.al./!/!/!/y!/y!/!/ybul.al.al.al.al.al.al.al.


那么、我怎么做呢?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    检查 R31是配置为直接输入还是16位捕捉。 有关详细信息、请参阅 AM335x TRM 修订版 O 的第4.4.1.2.3节。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    在程序0开始时读取 GPCFG0和 GPCFG1。 (分别为0x00026000 + 0x08或0x0c)
    将0写入两个寄存器,而不是启动循环读取数据,在 GPCFG0处显示0,并将位25从0切换到1,然后在 GPCFG1中切换回(我认为这是因为使用中断和 PRU2传输数据?) 很遗憾、读取__R31[16]会返回0
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已要求我们的 PRU 专家查看此内容。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、我在器件树中发现了一个错误、导致了这样的奇怪行为 pr1_pru0_R31_16。 虽然 TI Cloud PimuxTool 显示了正确的支脚模式(0x25),但该案例最终用于复制+粘贴0x26引脚模式。 将模式设置为0x25会导致_R31出现正确行为