极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12376|回复: 1

已解决,如何在SPI初始化以后拉低MOSI电平

[复制链接]
发表于 2015-9-21 10:35:23 | 显示全部楼层 |阅读模式
本帖最后由 swjtutl 于 2015-9-21 20:19 编辑

电池应用,所以需要在休眠时降低功耗。
micro SD卡用了arduino 的SD库,利用SPI通讯,对328P而言11号口是MOSI,在使用SD.begin(SS)初始化后就发现即使进入停机休眠模式MOSI口始终处于高电平,在loop循环中即使采用了SPI.end()然后用  bitClear(PORTB,PB3)(digitalWrite()的avr命令)也不能把11号端口的电平拉低了。而MOSI是高电平的话由于SD本身的问题将导致0.5mA左右的电流泄漏,而且是在待机状态下。而我们的应用待机耗电指标是0.2mA以内,就被这里给超额浪费了。
不知道各位同学有没有好的办法。
实在不行就准备在这个地方装模拟开关,待机前断开μP和SD卡的MOSI的连接
回复

使用道具 举报

 楼主| 发表于 2015-9-21 20:18:16 | 显示全部楼层
搞定了,arduino库里面的SPI.end()没有关闭SPI,用了SPCR寄存器关闭SPI即可。
  SPCR&=~(1<<SPE);//关闭SPI
  DDRB |= (1<<PB3);//设置11号口为读(328P)
  bitClear(PORTB,PB3);//拉低11号口电平
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 16:05 , Processed in 0.034544 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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