Loading...
首页问答    

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

qn1558063753
qn1558063753  发布于 2019-07-18 09:50:08 1062
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的控制寄存器进行的初值的赋值。
请大佬帮忙分析分析。
我来回答
回答可得5积分
11个回答
发布于 2019-07-18 10:04:12
自己顶一下。0x04570000是spi0的控制器的base地址。
0
发布于 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
发布于 2019-07-30 14:02:41
自己顶一下,spi控制器有个时钟门控,先把spi的时钟门控打开后,能对spi控制器的reg进行数据的读写。但是spi好像工作不了。clk波形都没有。
0
发布于 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
发布于 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
发布于 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
发布于 2019-07-18 23:47:51
看向复用配置对不对
0
发布于 2021-04-27 15:39:14

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

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

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

0
发布于 2021-09-18 17:12:32

~ # ssp_write 0x0 0x0 0x81 0x0045 0x32 0x1 0x2 0x1
Board tools : ver0.0.1_20121120

DEBUG:############################################
spi_num:0, csn:0
dev_addr:0x0081, reg_addr:0x0045, data:0x0032, dev_width:1, reg_width:2, data_width:1, reg_order: 1, data_order: 1

[END]
[END]
~ # ssp_read 0x0 0x0 0x80 0x0045 0x1 0x1 0x2 0x1
Board tools : ver0.0.1_20121120

DEBUG:############################################
spi_num:0, csn:0
dev_addr:0x0080, reg_addr:0x0045, num_reg:1, dev_width:1, reg_width:2, data_width:1, reg_order: 1, data_order: 1
====reg_addr:0x0045====
0x0000: 0x0000
[END]
[END]
~ #

楼主,我直接在控制台读写spi控制的相应寄存器,出现了上面的情况(写入和读出不一致),请问这是什么情况。

0
+ 添加网盘链接/附件
或将文件直接拖到这里
悬赏:
EBC
文件格式必须为doc,docx,xls,xlsx,pdf,ppt,pptx,txt,zip,rar,tar,7z,gz
网盘
* 网盘链接:
* 提取码:
悬赏:
EBC
易百纳技术社区
确定要删除此文章、专栏、评论吗?
确定
取消
易百纳技术社区