[MSP-EXP432E401Y] MSP432E401系列QSSI外设高级模式下FSS引脚的控制

[复制链接]

73

主题

469

帖子

1005

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1005
楼主
发表于 2021-4-12 17:48:32   只看该作者
pikka 发表于 2021-4-11 17:58
我在网络上关于此的信息不多,希望了解的大佬不吝赐教

用的SDK是哪个版本?

73

主题

469

帖子

1005

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1005
沙发
发表于 2021-4-13 16:51:02   只看该作者
pikka 发表于 2021-4-12 21:48
SDK 是 SimpleLink MSP432E4 MCU SDK(4.20.00.12),IDE 是 CCS 10,编译器是 CCS Compiler


经过排查,这个问题和SDK版本,CCS版本无关。

你的理解基本都是对的,但是忽略里一个重要的特性:

SSI外设,带有FIFO缓冲区,往数据寄存器写数据,是往FIFO里边写数据。如果只是发送1个字节,和平常的发送没太大区别。

但是,如果一次性发送多个字节,这个时候要注意, CPU往FIFO里边写数据的速度 是快于 SSI外设对外发送数据的。
往FIFO里边写完数据了,数据存在FIFO里,还没发送完。 CPU可以继续往下执行,SSI外设也接着慢慢往外发送数据。

问题就出在这, SSI数据还没发送完,你就把 配置给修改了,所以达不到预期的效果。

你的代码只要加个延时就没问题了。

73

主题

469

帖子

1005

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1005
板凳
发表于 2021-4-13 16:54:10   只看该作者
shengxiang 发表于 2021-4-13 16:51
经过排查,这个问题和SDK版本,CCS版本无关。

你的理解基本都是对的,但是忽略里一个重要的特性:
  1.     uint32_t tempDelay;
  2.     while(1)
  3.     {
  4.         SSIAdvFrameHoldEnable(SSI3_BASE);
  5.         SSIDataPut(SSI3_BASE, 0xAA);
  6.         SSIDataPut(SSI3_BASE, 0xAA);
  7.         SSIDataPut(SSI3_BASE, 0xAA);
  8.         SSIDataPut(SSI3_BASE, 0xAA);
  9.         SSIAdvDataPutFrameEnd(SSI3_BASE, 0xBB);
  10.         for(tempDelay=100;tempDelay>0;tempDelay--); //添加个延时,等待FIFO里边的数据发送完
  11.         SSIAdvFrameHoldDisable(SSI3_BASE);

  12.         for(tempDelay=60000;tempDelay>0;tempDelay--);
  13.         for(tempDelay=60000;tempDelay>0;tempDelay--);
  14.         for(tempDelay=60000;tempDelay>0;tempDelay--);

  15.     }
复制代码

73

主题

469

帖子

1005

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1005
4#
发表于 2021-4-13 16:54:49   只看该作者
示波器只有两个通道:
黄线是 数据线
蓝线是 片选信号


73

主题

469

帖子

1005

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1005
5#
发表于 2021-4-13 17:04:43   只看该作者

73

主题

469

帖子

1005

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1005
6#
发表于 2021-4-14 14:57:57   只看该作者
pikka 发表于 2021-4-13 18:57
我进一步思考了不同频率下,延时长度的设置问题

首先,单独使用SPI的经典模式或者单独使用高级模式都不 ...


有个状态寄存器,可以考虑下,譬如说忙标识,FIFO是否为空等,可以使用起来。
快速回复 返回顶部 返回列表