【一兮】nrf52840的SPI一主多从,关于CS片选自动选中的解决方法

1.问题背景

答:笔者需要用nrf52840的SPI进行一主多从的SPI通信,主机用nrf52840,通过片选选中从芯片通过SPI进行通信,开始我的想法是,就简单的MCU IO输出高低电平控制CS的高低,加在SPI发送函数前面便能实现自己想要的效果。发现并没有解决问题,在多次验证的时候发现nrf52840的硬件SPI的初始化我即使不配置CS引脚,通信的时候CS也会自动选中其中的一片,其中一片pin为0 0,另一片pin为 0 8,每次默认选中的都是pin 0 0。

2.解决方案

答:简单的在SPI的发送函数前面加入CS IO口输出电平无法选中,那么换一个思路。每次在SPI发送函数的前面都进行一次初始化硬件SPI,这里的初始化硬件SPI配置相应的CS引脚即可,虽然初始化耗费了MCU资源,但是这点资源对于MCU来说凤毛麟角。初始化完一个对于的CS脚硬件SPI的时候,发送完毕,应当使用下面的反初始化函数执行后。例如下次选中pin0 8的cs,再用下面的初始化函数初始化,下一个要发送给另一片,例如pin 0 0的cs,反初始化后再进行。以此类推,笔者使用的是SPI3

nrfx_err_t nrfx_spim_init(nrfx_spim_t  const * const p_instance,
                          nrfx_spim_config_t const * p_config,
                          nrfx_spim_evt_handler_t    handler,
                          void                     * p_context)



void nrfx_spim_uninit(nrfx_spim_t const * const p_instance)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值