qn1558063753

qn1558063753

0个粉丝

6

问答

0

专栏

0

资料

qn1558063753  发布于  2019-07-18 09:50:08
采纳率 0%
6个问答
4458

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

   
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的控制寄存器进行的初值的赋值。
请大佬帮忙分析分析。
我来回答
回答11个
时间排序
认可量排序

qn1558063753

0个粉丝

6

问答

0

专栏

0

资料

qn1558063753 2019-07-18 10:04:12
认可0
自己顶一下。0x04570000是spi0的控制器的base地址。

qn1558063753

0个粉丝

6

问答

0

专栏

0

资料

qn1558063753 2019-07-19 08:50:32
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=145537&ptid=75208]kelisi 发表于 2019-7-18 23:47[/url]
看向复用配置对不对[/quote]

你好,谢谢回复。
复用寄存器是对的,已经复用成了spi模式了。但是写I2C控制器的寄存器能写入正常。请问你用spi的控制器是正常的吗?自己编译的内核还是还是给的sample内核?

qn1558063753

0个粉丝

6

问答

0

专栏

0

资料

qn1558063753 2019-07-30 14:02:41
认可0
自己顶一下,spi控制器有个时钟门控,先把spi的时钟门控打开后,能对spi控制器的reg进行数据的读写。但是spi好像工作不了。clk波形都没有。

scsi

0个粉丝

26

问答

0

专栏

2

资料

scsi 2019-11-17 14:57:06
认可0
本帖最后由 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;
};

qn1573982843

0个粉丝

0

问答

0

专栏

0

资料

qn1573982843 2019-11-17 17:39:33
认可0
[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每次都能正常加载?

天最

1个粉丝

52

问答

0

专栏

2

资料

天最 2020-03-27 09:55:19
认可0
[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 命令后,再去看时钟门控是关了!!

qn1558063753

0个粉丝

6

问答

0

专栏

0

资料

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

我自己也没有折了,采用直接操作spi的控制器的方式进行操作SPI。先打开时钟,确保能读写spi的寄存器。然后自己写了一个spi的驱动进行工作。

kelisi

0个粉丝

8

问答

0

专栏

8

资料

kelisi 2019-07-18 23:47:51
认可0
看向复用配置对不对

哗啦

0个粉丝

0

问答

0

专栏

0

资料

哗啦 2021-04-27 15:39:14
认可0

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

Tracy_9216

2个粉丝

6

问答

79

专栏

29

资料

Tracy_9216 2021-04-28 16:49:47
认可0

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

加速度

0个粉丝

1

问答

0

专栏

0

资料

加速度 2021-09-18 17:12:32
认可0

~ # 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控制的相应寄存器,出现了上面的情况(写入和读出不一致),请问这是什么情况。

或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区