logo资料库

关于S32K系列驱动之----SPI(SDK)开发分享.docx

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
下面是使用 S32K146demo 版开发 SPI 过程中的配置以及测试代码介绍。 1. 配置 PE,点击 ProcessorExpert.pe,配置 SPI 我用的是中断发送是方式: 这个是 pe 的配置,具体使用什么片选和 Phase 要看 MCU(S32K144/6)对应的片选芯片的 具体要求,Phase 可以百度查看 SPI 四种模式区别一文,写的很详细。 2. 关于驱动的初始化: 我采用的是 lpspi,所以生成的 SPI 也是 lpspi 的;MCU 为主,所以用的是 Master 发送。 这里面: 1. Instance 为所选的channel,可以看PE中关于pin_mux中的关于SPI的配置,然后决定所使 用的instance。 2. LpspiSttate 参数为被赋值参数,自定义或使用下图的结构体直接填充都可以: lpspiCom1State 。 3. spiConfig 参数为general code中用PE配置好的值,直接拿来填充,比如我的配置:把 lpspiCom1_MasterConfig0 带入即可。 初始化结束。
发送: 由于SPI的运行方式为发和接都由一个函数来处理的,我们按照SDS32里面SDK的介绍,一般 用阻塞和非阻塞方式来发送。 非阻塞即为数据发送过程中可以被其他中断打断,等别人做完事情以后再接着发 阻塞即反过来,详细解释百度都有 用demo版测试SPI时,将SPI的TX 、RX用杜邦线接在一起了,做成了回环,可以验证发送 的数据是否成功发送,也可以用示波器测量波形是否正确,所选的phase波形即为发送数据 波形。 注:SDK发送函数中有介绍rxbuffer:可以设置为空,然后我们看下面的测试代码以及结果。 这里面有个问题: 1. 测试buffer为2字节,不加rxbuffer,可以发送成功 LPSPI_DRV_MasterTransferBlocking(SPI_INSTANCE_1,dummyBuffer,NULL,2,OSIF_ WAIT_FOREVER); 2. 测试buffer600字节,不加rxbuffer发送失败! LPSPI_DRV_MasterTransferBlocking(SPI_INSTANCE_1,dummyBuffer,NULL,600,OSI F_WAIT_FOREVER); 3. 测试buffer600字节,加rxbuffer,可以发送成功 LPSPI_DRV_MasterTransferBlocking(SPI_INSTANCE_1,dummyBuffer,RxdummyBuffe r,600,OSIF_WAIT_FOREVER) 测试step2中遇到的问题暂时没有得到解决,等有结果会更新,不过按照以上来处理,可以 保证发送和接收没有问题。
分享到:
收藏