完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
主接收中断函数是 r_riic0_receive_interrupt()
|
|
|
|
那不是主机向从机发送数据触发的中断吗?我想问的是R_RIIC0_Slave_Send(uint8_t * const tx_buf, uint16_t tx_num)这个发送函数是什么时候把数据发出去的,是检测到主机向其查询数据时就发吗?但是我调用这个函数,无论主机如何查询都收不到返回值啊 |
|
|
|
ncvttwer 发表于 2018-7-23 06:50 如果你把RX23T的IIC做从使用的话,大概有这样几个状态。 1.主给RX发数据,RX就是作为从使用,使用的接收函数是R_RIIC0_Slave_Receive(),其中两个形参一个接收数据的数组,一个是要接收的数据长度,得到的数据是通过static void r_riic0_receive_interrupt(void)这个中断得到的。 2.RX要给主发送数据,首先RX要抢占总线,void R_RIIC0_StartCondition(void)这个就是用来抢占总线的,只有在总线空闲的时候才能抢占得逞,然后MD_STATUS R_RIIC0_Slave_Send(uint8_t * const tx_buf, uint16_t tx_num)发送数据,两个形参,第一个是发送数据的地址,可以是数组头的地址,第二个是要发送的数据长度。调用结束后,程序会自动发送数据,进到static void r_riic0_transmit_interrupt(void)中断中,这个中断会把所有需要发送的数据发送出去,当数据发送完成之后,会产生static void r_riic0_transmitend_interrupt(void)中断,发送完成,调用void R_RIIC0_StopCondition(void)函数释放总线。等待做从的状态。 你的主机没检测到数据是不是因为你的从没有抢占总线?所以无论你怎么调用函数,都是无法发出数据的。 你试试我的流程,有问题来提问,我尽量快速回答。 |
|
|
|
blnocyyp2002 发表于 2018-7-23 07:06 目前我的程序是这样写的,但还是发不出去,硬件上两个设备是直接相连的,没接上拉电阻,有关系吗?从机地址设的是0x70,下面的设置对吗? 昨天一直登不上来,刚刚才看到,抱歉。 |
|
|
|
blnocyyp2002 发表于 2018-7-23 07:06 还有个问题,按照我对IIC从机的理解,应该是主设备发送地址位后,若从机检测到的地址位与他发送的相同,这时从机就应该把数据发回去,请问抢占主线有什么作用?谢谢! |
|
|
|
ncvttwer 发表于 2018-7-23 07:29 你先把这两根线都外接上拉电阻。 |
|
|
|
|
|
|
|
接了2.2k欧的上拉电阻,结果一直进入错误中断中的下面这一个,貌似是超时了: |
|
|
|
又做了一个测试,两块RX23T,一块烧之前的从机发送程序,另一块烧下图中的主机接受程序,结果主机收不到数据,从机的现象和之前一模一样。 |
|
|
|
只有小组成员才能发言,加入小组>>
请问一个迭代法图形二值化的程序代码把宽改成240之后整个屏幕不显示是什么原因?
2666 浏览 0 评论
2656 浏览 1 评论
1893 浏览 1 评论
2048 浏览 2 评论
2612 浏览 2 评论
718浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 16:57 , Processed in 0.961277 second(s), Total 94, Slave 77 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号