查看: 1000|回复: 11

[讨论] 请教下rt系列的 mcu ,动态修改 spi 的时钟频率工作是否稳...

[复制链接]

该用户从未签到

26

主题

97

帖子

0

中级会员

Rank: 3Rank: 3

积分
386
最后登录
2023-9-12
发表于 2023-4-19 17:07:52 | 显示全部楼层 |阅读模式
请教下rt系列的 mcu ,动态修改 spi 的时钟频率工作是否稳定 ?

因为 spi 外设接了好几个,他们的工作时钟频率高低不齐

回复

使用道具 举报

该用户从未签到

35

主题

356

帖子

0

金牌会员

Rank: 6Rank: 6

积分
2577
最后登录
2023-6-23
发表于 2023-4-20 11:46:12 | 显示全部楼层
你要SPI工作过程中修改频率,还是初始化好之后,就不用改了?

不管哪种情况都没问题,只是如果在数据传输途中修改频率,就看从机端是否可以接受。
回复 支持 反对

使用道具 举报

该用户从未签到

26

主题

97

帖子

0

中级会员

Rank: 3Rank: 3

积分
386
最后登录
2023-9-12
 楼主| 发表于 2023-4-21 10:41:16 | 显示全部楼层
香水橙 发表于 2023-4-20 11:46
你要SPI工作过程中修改频率,还是初始化好之后,就不用改了?

不管哪种情况都没问题,只是如果在数据传输 ...

传输过程中不会修改,

我的意思就是在每次 启动传输之前 进行修改,修改完成后就操作其中一个 spi 进行通信,一次通信完成后 再操作其他的 spi 设备时再次进行修改
回复 支持 反对

使用道具 举报

该用户从未签到

35

主题

356

帖子

0

金牌会员

Rank: 6Rank: 6

积分
2577
最后登录
2023-6-23
发表于 2023-4-21 15:14:31 | 显示全部楼层
这个不叫动态修改

这属于正常操作,完全没问题。
回复 支持 反对

使用道具 举报

该用户从未签到

26

主题

97

帖子

0

中级会员

Rank: 3Rank: 3

积分
386
最后登录
2023-9-12
 楼主| 发表于 2023-4-22 21:45:08 | 显示全部楼层
香水橙 发表于 2023-4-21 15:14
这个不叫动态修改

这属于正常操作,完全没问题。

貌似现在遇到一个比较揪心的问题, 请大神指点指点,具体如下:

我的 外设 spi1 上接了好几个器件, 每个 器件的 cs 管教不同, 目前使用 pcs0 的管教能够正常工作, 但是这个使能后, 其他 spi 器件进行读写时都不正常了, 如果 吧 pcso 管脚改成 用户 自行控制模式的话, 读写失败 , 请问这个 系统默认的配置的 pcs0 管脚 用户要任何才能进行控制后 spi 也能工作正常呀  ??
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    昨天 07:08
  • 签到天数: 130 天

    [LV.7]常住居民III

    9

    主题

    290

    帖子

    0

    高级会员

    Rank: 4

    积分
    677
    最后登录
    2024-4-26
    发表于 2023-4-23 01:44:14 | 显示全部楼层
    如果数据请求只是工作在master,可以动态修改。建议还是单独开通道吧。
    今天天气不错!签到!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    35

    主题

    356

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2577
    最后登录
    2023-6-23
    发表于 2023-4-23 10:01:48 | 显示全部楼层
    hpdell 发表于 2023-4-22 21:45
    貌似现在遇到一个比较揪心的问题, 请大神指点指点,具体如下:

    我的 外设 spi1 上接了好几个器件, 每个 器 ...

    你最好拿示波器看看几个器件的CS信号,凭空说很难判断是哪里有问题。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    26

    主题

    97

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    386
    最后登录
    2023-9-12
     楼主| 发表于 2023-4-23 10:42:20 | 显示全部楼层
    本帖最后由 hpdell 于 2023-4-23 10:49 编辑
    香水橙 发表于 2023-4-23 10:01
    你最好拿示波器看看几个器件的CS信号,凭空说很难判断是哪里有问题。

    其他几个 spi 接口的 从器件的 cs 管脚我目前都是 职高不操作的,其他几个 spi 的丛器件 的cs 管脚我使用的普通 io 功能 来控制的
    现在就是 单独的 软件控制 pcs0 管脚(不使用sdk 库控制 cs 模式)读写数据也是失败的,

    就是用户在读写 前 吧

    #define  IOMUXC_GPIO_LPSPI1_PCS0   IOMUXC_GPIO_AD_29_GPIO9_IO28    // cs0 片选 软件用户控制
    #define  LPSPI1_GPIO_CS0               GPIO9
    #define  LPSPI1_GPIO_CS0_PIN           (28U)

    CS_L ;
    bsp_spi1_ReadWriteByte(0x25);  // 就这样数据貌似发送不出去 ???
    CS_H ;

            bsp_gpio_mode_config(LPSPI1_GPIO_CS0,          // GPIO_Type *base,
                                                            LPSPI1_GPIO_CS0_PIN,          //uint32_t pin,
                                                            kGPIO_DigitalOutput,          //gpio_pin_direction_t direction,
                                                            1U,                                                          //uint8_t outputLogic,
                                                            kGPIO_NoIntmode               //gpio_interrupt_mode_t interruptMode  普通 io 模式,不使用中断
                                                            );


      IOMUXC_SetPinMux(
          IOMUXC_GPIO_LPSPI1_PCS0,          /* GPIO_AD_29 is configured as LPSPI1_PCS0 */
          0U);                                    /* Software Input On Field: Input Path is determined by functionality */
            

      IOMUXC_SetPinConfig(   // 上拉
          IOMUXC_GPIO_LPSPI1_PCS0,          /* GPIO_AD_29 PAD functional properties : */
          0x0AU);                                 /* Slew Rate Field: Slow Slew Rate
                                                     Drive Strength Field: high drive strength
                                                     Pull / Keep Select Field: Pull Disable, Highz
                                                     Pull Up / Down Config. Field: Weak pull up
                                                     Open Drain Field: Disabled
                                                     Domain write protection: Both cores are allowed
                                                     Domain write protection lock: Neither of DWP bits is locked */




    uint8_t bsp_spi1_ReadWriteByte(uint8_t TxData)
    {
        uint8_t spirxdata = 0;
        uint8_t spitxdata = TxData;
        lpspi_transfer_t spi_tranxfer;
       
        spi_tranxfer.configFlags = EXAMPLE_LPSPI_MASTER_PCS_FOR_TRANSFER|kLPSPI_MasterPcsContinuous;     //PCS1
        spi_tranxfer.txData = &spitxdata;                 //要发送的数据
        spi_tranxfer.rxData = &spirxdata;                 //接收到的数据
        spi_tranxfer.dataSize = 1;                        //数据长度
        LPSPI_MasterTransferBlocking(EXAMPLE_LPSPI_MASTER_BASEADDR,&spi_tranxfer);            //SPI阻塞发送                                               
        return spirxdata;
    }

    ----------------------------------------------------------------------------------------------------
    ----------------------------------------------------------------------------------------------------
    ----------------------------------------------------------------------------------------------------
    //GPIO_AD_29(coordM17),LPSPI1_PCS0/U27[1]/J10[6]/J10[3]/WL_HOST_WAKE/U16[27]/WIFI_WAKE_B_3
    #define  IOMUXC_GPIO_LPSPI1_PCS0   IOMUXC_GPIO_AD_29_LPSPI1_PCS0   // cs0 片选硬件自动控制

    如果吧 cs0 配置成这样读写是正常的,但是这样的话,就只能操作一个 spi 设备了,

    ----------------------------------------------------------------------------------------------------
    ----------------------------------------------------------------------------------------------------
    看资料也没有找到哪里可以取消 硬件控制模式的 寄存器呀 。。。 ??















    回复 支持 反对

    使用道具 举报

    该用户从未签到

    35

    主题

    356

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2577
    最后登录
    2023-6-23
    发表于 2023-4-24 21:10:22 | 显示全部楼层
    怎么知道数据发不出去?用示波器看过吗?

    纯看代码是很难判断到底问题出在哪里?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    26

    主题

    97

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    386
    最后登录
    2023-9-12
     楼主| 发表于 2023-4-26 09:17:11 | 显示全部楼层
    本帖最后由 hpdell 于 2023-4-26 10:06 编辑
    香水橙 发表于 2023-4-24 21:10
    怎么知道数据发不出去?用示波器看过吗?

    纯看代码是很难判断到底问题出在哪里?

    我使用逻辑分析仪看了一下, 貌似数据可以发送出来,就是在读写 at45db321 的芯片时,就会死在读取 状态寄存器的地方,这个 at45db321 的驱动以前在 st 上使用是没有问题的,现在就只是修改了 底层的驱动而已

    可以读出 at45db321 芯片的 ID 号,而且 id 号是正确的
    哎,rt1176 的仿真也很难进入,真是难搞哇
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-27 01:45 , Processed in 0.132398 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表