|
|
使用下面的例子代码,不能使SIMO和CS为低电平:: ?* A5 l: U* [$ [& c
void PSCInit(void)
0 F2 d2 ~& Q0 ~. {6 R( T: |{
2 w# M5 f9 x- P: j: }" z! j PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
6 F; X# J. ?! Z3 v; B/ p8 o}2 d; [7 O$ `2 x. s: @3 `2 n
+ K- a$ B; g) ?& n
void GPIOBankPinMuxSet(void) n6 V1 P" ~1 V
{
& |+ Y7 a- C5 m5 D; @$ M7 s1 p' E9 ~ // DRDY ------------ GPIO6[14] -- 111- F) X b7 R. n; R _( ?
// SPI1_CLK ------------ GPIO2[13] -- 46# J9 X$ H9 }4 w5 o3 P
// SPI1_SOMI------------ GPIO2[11] -- 44
/ y( c; S$ E6 i8 n0 I; S N/ M // SPI1_SIMO------------ GPIO2[10] -- 431 N8 r( w5 p9 i- L0 S4 g3 ?+ g
// SPI1_CS2 ------------ GPIO1[0] -- 17* W0 t7 n& p# q
// SPI1_CS3 ------------ GPIO1[1] -- 18
7 ?4 t* e/ i% Y6 h# D6 k
6 R: G8 P' A) j HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);. ^# D6 s- b7 v1 ?! v# i2 P
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
: d, R$ G4 i3 U0 l; ~; d HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);! j( E. R$ x0 I* S% {% {. A$ ]
/ O9 K$ j! n& g+ _
//DRDY
# J9 L7 `9 Q) ], }, B) N# t GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
" T1 z7 g h6 K: V- w1 q4 ^+ k% ? // CS2,CS3
V. M' N, m: I9 ?6 @) A GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2- R. q% ^! l6 p+ D0 w: I
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS35 E) G; }/ O X- o& e1 Z
//SIMO2 _7 J( t( L6 J+ J
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
8 f. X1 ]4 O, y- [+ j$ | //SOMI" G( ~+ W$ i0 m0 O* `
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI. \% K3 A1 O; o$ K
//CLK
% z" p5 E9 a- B, F) [/ B* r GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
! F. V; h) x( o7 j. E
3 X4 v9 }# f b" q, f, Z9 x // LDAC
( W: r* x5 w5 H5 s- n9 p, L; v2 w' | GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK& N) V! b$ N8 y3 @8 E6 M
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
- u |* J) Q) j# a+ j# c4 Z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2! P$ J9 m/ [9 R5 Z
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS37 W* |* u/ H& ?. x! v; b
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY+ I% ?$ \. ~, J. ?: |( }
}! k7 L" F, M+ C( E! \, I; n* S
! b" m- t( F# `0 A) p/ m# C2 Fint main(void)
6 g, k! R! }2 B{
5 p5 S( d+ Y+ a5 r$ Z ~. W // 外设使能0 Z5 T$ w. \5 w2 E4 E; R _
PSCInit();
, F [. W5 j- E, c3 O/ B6 Y& A4 Z6 g% a# s! _' ~
7 ^' B6 S5 O# c* {5 U2 L: T
// 管脚复用配置+ `/ Z( m3 k' \+ n* N
GPIOBankPinMuxSet();: n$ _( @7 ?% y
for(;;)9 @1 ?4 C2 s5 Z, b
{
# r+ r; b4 O: G8 r8 b0 S SET_SCLK();//时钟正常输出
/ b8 W$ O# D _3 y, K; v GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS28 K: B. Z. U1 i {; P! H7 ~- c$ f
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
" |( L. Z9 M, L3 m$ p6 b1 q( @ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN' d. j" `$ }; {/ N' L
1 j0 K/ V, M. |! J% I! v delay(20);& u; P8 J0 o$ V3 I% g0 a
CLR_SCLK(); |3 Z- o l/ V. M9 z, y
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
& r+ a% ]) v" p9 b7 K: c# A+ k GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
' b( \% v' A: y9 U+ a GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
& y/ C% L; [1 X$ g! f! C- H! \ delay(20);
, [- J" v. U3 @! \# {3 c D }, B H, h( l/ k8 e# J( _
}
% Z8 @3 S8 n* Y/ R |
|