串电阻为了修整信号波形,避免出现振荡,自己DIY可靠性要求没有那么苛刻的话不接也可以。
楼主是只测试发送部分,但是却没有接收的板子吗?换而言之,楼主当前做的工作就是,我就让你发送,不管有没有其他器件接收?
如果是这样的话,将发送配置的函数中的“自动应答”功能关闭:
实际上只要是使这个EN_AA寄存器的bit0=0就可以失能通道0的自动应答了:
如果不这么做,根据数据手册中所写的,发送端在发送出去接收端的地址之后,会等待来自接收端的应答信号;如果超时,就会按照某个寄存器(记不清楚了)中设定的重试次数继续继续重试;如果所有重试次数都用光了,那么某个寄存器(也记不清了)就会 置位表示没有接收端设备的应答信号。由于发送一直都是不成功,所以IRQ也就不会有电平变化。
不过如果不是这样的话,有对端接收,那么问题原因就比较多,例如通道不正确,频率不正确,接收端设置与发送端设置不一样(例如上面的自动应答),接收端地址和发送端给出的地址不一致等等都会导致发送失败。
此外我也不太明白为什么楼主使用调试器反而没有这种问题。
串电阻为了修整信号波形,避免出现振荡,自己DIY可靠性要求没有那么苛刻的话不接也可以。
楼主是只测试发送部分,但是却没有接收的板子吗?换而言之,楼主当前做的工作就是,我就让你发送,不管有没有其他器件接收?
如果是这样的话,将发送配置的函数中的“自动应答”功能关闭:
实际上只要是使这个EN_AA寄存器的bit0=0就可以失能通道0的自动应答了:
如果不这么做,根据数据手册中所写的,发送端在发送出去接收端的地址之后,会等待来自接收端的应答信号;如果超时,就会按照某个寄存器(记不清楚了)中设定的重试次数继续继续重试;如果所有重试次数都用光了,那么某个寄存器(也记不清了)就会 置位表示没有接收端设备的应答信号。由于发送一直都是不成功,所以IRQ也就不会有电平变化。
不过如果不是这样的话,有对端接收,那么问题原因就比较多,例如通道不正确,频率不正确,接收端设置与发送端设置不一样(例如上面的自动应答),接收端地址和发送端给出的地址不一致等等都会导致发送失败。
此外我也不太明白为什么楼主使用调试器反而没有这种问题。
举报