Loading...
首页问答    

HI3519AV100的spi不能正常工作。写spi控制器的相应寄存器写失败

qn1558063753
qn1558063753  发布于 2019-07-18 09:50:08 694
hi3519a的spi驱动的代码已经加载,用系统给的方式进行操作,只有CS有片选信号出来。其它信号没有。查询spi控制器的寄存器,都没有配置。 以下是我写spi寄存器的值,写入失败,i2c控制器的寄存器可以写入正常[code]~ # himm 0x04570000 0
*** Board tools : ver0.0.1_20121120 ***
[debug]: {source/utils/cmdshell.c:166}cmdstr:himm
0x04570000: 0x00000048 --> 0x00000000
[END]
~ # himm 0x04570000 0
*** Board tools : ver0.0.1_20121120 ***
[debug]: {source/utils/cmdshell.c:166}cmdstr:himm
0x04570000: 0x00000048 --> 0x00000000
[END]
~ # [/code]
spi控制器的12个reg都是一样的值,初值都是0x7F00,但是在spi驱动的probe中又对spi的控制寄存器进行的初值的赋值。
请大佬帮忙分析分析。
qn1558063753  发布于 2019-07-18 10:04:12
自己顶一下。0x04570000是spi0的控制器的base地址。
0
qn1558063753  发布于 2019-07-19 08:50:32
[quote][url=forum.php?mod=redirect&goto=findpost&pid=145537&ptid=75208]kelisi 发表于 2019-7-18 23:47[/url]
看向复用配置对不对[/quote]

你好,谢谢回复。
复用寄存器是对的,已经复用成了spi模式了。但是写I2C控制器的寄存器能写入正常。请问你用spi的控制器是正常的吗?自己编译的内核还是还是给的sample内核?
0
qn1558063753  发布于 2019-07-30 14:02:41
自己顶一下,spi控制器有个时钟门控,先把spi的时钟门控打开后,能对spi控制器的reg进行数据的读写。但是spi好像工作不了。clk波形都没有。
0
scsi  发布于 2019-11-17 14:57:06
本帖最后由 scsi 于 2019-11-17 16:43 编辑

似乎04570000在spi驱动中倍重映射并lock了,如果不加载spi驱动,04570000和04570010是可以写的。
另外, 似乎用户层与驱动内核的结构定义不一样?
spi_ioc_transfer 定义版本不一致
/*struct spi_ioc_transfer {
        __u64                tx_buf;
        __u64                rx_buf;

        __u32                len;
        __u32                speed_hz;

        __u16                delay_usecs;
        __u8                bits_per_word;
        __u8                cs_change;
        __u32                pad;

        // If the contents of 'struct spi_ioc_transfer' ever change
         // incompatibly, then the ioctl number (currently 0) must change;
         //ioctls with constant size fields get a bit more in the way of
         // error checking than ones (like this) where that field varies.
         // NOTE: struct layout is the same in 64bit and 32bit userspace.
         
};*/

struct spi_ioc_transfer {
        const void        *tx_buf;
        void                *rx_buf;
        unsigned        len;

        dma_addr_t        tx_dma;
        dma_addr_t        rx_dma;
        struct sg_table tx_sg;
        struct sg_table rx_sg;

        unsigned        cs_change:1;
        unsigned        tx_nbits:3;
        unsigned        rx_nbits:3;
#define        SPI_NBITS_SINGLE        0x01 //1bit transfer
#define        SPI_NBITS_DUAL                0x02 // 2bits transfer
#define        SPI_NBITS_QUAD                0x04 //4bits transfer
        u8                bits_per_word;
        u16                delay_usecs;
        u32                speed_hz;

        struct list_head transfer_list;
};
0
qn1573982843  发布于 2019-11-17 17:39:33
[quote][url=forum.php?mod=redirect&goto=findpost&pid=145941&ptid=75208]qn1558063753 发表于 2019-7-30 14:02[/url]
自己顶一下,spi控制器有个时钟门控,先把spi的时钟门控打开后,能对spi控制器的reg进行数据的读写。但是sp ...[/quote]

楼主,SPI DMA每次都能正常加载?
0
天最  发布于 2020-03-27 09:55:19
[quote][url=forum.php?mod=redirect&goto=findpost&pid=145941&ptid=75208]qn1558063753 发表于 2019-7-30 14:02[/url]
自己顶一下,spi控制器有个时钟门控,先把spi的时钟门控打开后,能对spi控制器的reg进行数据的读写。但是sp ...[/quote]

楼主,问题可解决了??spi复用,门控打开后,发现后面时钟门控会自动关闭??不知是哪里的原因。。。比如运行了ssp_read 0x0 0x0 0x2 0x0 0x10 0x1 0x1 0x1 0x1 0x1 命令后,再去看时钟门控是关了!!
0
qn1558063753  发布于 2020-03-30 11:07:35
[quote][url=forum.php?mod=redirect&goto=findpost&pid=156040&ptid=75208]天最 发表于 2020-3-27 09:55[/url]
楼主,问题可解决了??spi复用,门控打开后,发现后面时钟门控会自动关闭??不知是哪里的原因。。。比 ...[/quote]

我自己也没有折了,采用直接操作spi的控制器的方式进行操作SPI。先打开时钟,确保能读写spi的寄存器。然后自己写了一个spi的驱动进行工作。
0
kelisi  发布于 2019-07-18 23:47:51
看向复用配置对不对
0
哗啦  发布于 2021-04-27 15:39:14

楼主解决了没,我用3521也有类似问题,SPI的相关寄存器使用himm命令无法进行设置。SPI的三个管脚,使用程序设置为普通IO,仍然无法进行拉高或者拉低操作。使用SSP读取会报如下错误

0
Tracy_9216  发布于 2021-04-28 16:49:47

spi可以参考海思比较新的片子的驱动,加上去,直接使用标准的spi驱动,生成节点,通过节点来手法,类似于串口,这样问题会少很多

0
添加附件:文件小于20M 文件格式必须为doc,docx,xls,xlsx,pdf,ppt,pptx,txt,zip,rar,tar,7z,gz
上传
文件格式必须为doc,docx,xls,xlsx,pdf,ppt,pptx,txt,zip,rar,tar,7z,gz,gz
易百纳技术社区
确定要删除此文章、专栏、评论吗?
确定
取消
易百纳技术社区