|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
$ D- f" _6 `# e0 k |9 lvoid PSCInit(void)+ M$ Q2 @. u# e
{
, O, X$ |) ^7 Y7 y5 u4 P PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
" Y( F& Z' V0 J; Q7 o" j* ^}
& @, q" H7 `3 z* Z" f$ u$ b2 T$ A9 p1 o; L U5 r
void GPIOBankPinMuxSet(void)
3 W9 E4 M+ g8 [" e& {0 i{! T% P' }: Y* p- U. _7 F* C2 v
// DRDY ------------ GPIO6[14] -- 1113 y9 O& |$ F1 E1 q: b9 S
// SPI1_CLK ------------ GPIO2[13] -- 46
# g E& H1 i( ]& \# X+ g // SPI1_SOMI------------ GPIO2[11] -- 44( J1 Q; M7 M1 q! x$ `
// SPI1_SIMO------------ GPIO2[10] -- 43
7 ~2 F! s; m, H // SPI1_CS2 ------------ GPIO1[0] -- 17
* Z! H3 f8 j. g a+ g$ L" M5 O // SPI1_CS3 ------------ GPIO1[1] -- 18+ x6 w, |5 n/ I1 W( O! n
# C- I, t$ R4 d X3 x HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);4 _# |0 z' }# X3 f2 B/ J
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);% Z8 E3 @4 ?% b
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
- G S4 G% P& o- a. e6 H; e# e* ]3 N) S; x
//DRDY
$ J* o+ d4 x1 c8 V% L GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY/ U ^! E+ f( W& t* N# j# [
// CS2,CS34 w4 F+ K, G( g# a
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2/ g- l! L; y: ?; l4 Z) V/ ?
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
- m( I$ B$ ^( p //SIMO8 Q! \: R; G5 R; j) F+ V/ [
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO7 N4 F7 N) w& `+ [
//SOMI5 G9 h |, U( A2 {- Z) m- U& H
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
+ i. n/ l( p2 a0 {6 i; @ //CLK. g0 E9 ^* B% s, e, E& d$ [
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
+ L3 o/ G) w& }# r! x* L2 C
+ U/ k1 ?1 o0 {: o( m$ H" { // LDAC; x1 j6 r1 L2 a$ b: N
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
+ w/ @3 u: a0 \% a' b$ f GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 X) ?7 k7 }9 O P. D1 p# `0 e K+ O GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2* z8 F! v @' @' F E0 Z8 W5 g
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
. a- Y# j: L4 S! v GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
- N C' O3 R/ s; r1 N# ?}
( u& h0 s) Z4 \2 P, m2 C" z% m2 U, n Z4 I) }' o. c P5 J1 X. m# s
int main(void)
2 a/ h# o k! l) m{' P8 X4 d0 J! y. v) T
// 外设使能
5 i! ?/ ]/ p, {7 W PSCInit();5 e$ ^ r! W; d
9 \# J) i, k) B# {* f1 Y; b 0 j. O5 S1 X4 F e' H* z8 U2 v F
// 管脚复用配置
( N2 _/ s( d% X% c _ GPIOBankPinMuxSet();/ O' ?) v" U1 |, k
for(;;)
( i$ P3 z2 Q3 f {
# q/ U' L9 r9 y. F SET_SCLK();//时钟正常输出
& f( |- s1 p' L$ f GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS22 z5 J. C1 c/ g( E0 ]' ]
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
, ?. _% O) H7 m' v$ e; o GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN7 K2 B) Q$ p Q& s2 r6 b/ E
7 j4 s$ E% j3 d% y! v1 Z delay(20);& F8 w. Q0 j+ J7 a5 J8 l: P
CLR_SCLK();
1 `5 L! ~8 A/ t' s GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
' i, G1 k3 M' J) E1 B9 F GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
5 {( g+ j, N& P0 B& e. Y GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
; N9 H! [! F8 f/ ~: d9 _ delay(20);
$ x0 L* ?& v( O, b }
. U1 ^: A0 ?- Q4 h) }( {) w5 g}
. V: s, c, W! ` |
|