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.

AM335X GPMC 地址数据总线复用问题

Other Parts Discussed in Thread: AM3354

使用AM3354的GPMC总线异步方式与FPGA进行通信,用的是linux 4.4代码。

在设备树中已配置了相关引脚的复用方式。(部分引脚与NAND FLASH复用,未在此列出)

            0x20 (PIN_INPUT_PULLUP | MUX_MODE0)    /* gpmc_ad8.gpmc_ad8 */
            0x24 (PIN_INPUT_PULLUP | MUX_MODE0)    /* gpmc_ad9.gpmc_ad9 */
            0x28 (PIN_INPUT_PULLUP | MUX_MODE0)    /* gpmc_ad10.gpmc_ad10 */
            0x2c (PIN_INPUT_PULLUP | MUX_MODE0)    /* gpmc_ad11.gpmc_ad11 */
            0x30 (PIN_INPUT_PULLUP | MUX_MODE0)    /* gpmc_ad12.gpmc_ad12 */
            0x34 (PIN_INPUT_PULLUP | MUX_MODE0)    /* gpmc_ad13.gpmc_ad13 */
            0x38 (PIN_INPUT_PULLUP | MUX_MODE0)    /* gpmc_ad14.gpmc_ad14 */
            0x3c (PIN_INPUT_PULLUP | MUX_MODE0)    /* gpmc_ad15.gpmc_ad15 */
            0x84 (PIN_OUTPUT | MUX_MODE0)        /* gpmc_csn2.gpmc_csn2 */

在设备树中已设置异步方式,16位数据,address-data复用及相关的时序:

fpga@2,2 {
        reg = <2 0 0x400>;
        compatible = "fpga-dpram";
        bank-width = <2>; /* 16 bit mode */
        
        gpmc,mux-add-data = <2>; /* address-data multiplexing */
        gpmc,cs-on-ns = <0>;
        gpmc,cs-rd-off-ns = <60>;
        gpmc,cs-wr-off-ns = <60>;
        gpmc,adv-on-ns = <0>;
        gpmc,adv-rd-off-ns = <20>;
        gpmc,adv-wr-off-ns = <20>;
        gpmc,we-on-ns = <20>;
        gpmc,we-off-ns = <50>;
        gpmc,oe-on-ns = <20>;
        gpmc,oe-off-ns = <50>;
        gpmc,rd-cycle-ns = <60>;
        gpmc,wr-cycle-ns = <60>;
    };

另外将FPGA的分区设置为CS2,地址设置为0x0A00_0000, 16M。

在linux下编写了一个测试程序,将0xff写到偏移地址4H处,使用逻辑分析仪抓取波形如下:

从波形上看,只能将地址数据(0x04)发送出去,并没有正确的发送数据(0xff)。

希望能够得到解答。