|
|
使用下面的例子代码,不能使SIMO和CS为低电平:: E9 U6 T% _0 e8 b, A9 x
void PSCInit(void)
' v% X$ P/ w/ _* w{# s% S* ^8 b- h5 o
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);& j3 o& _: \: l/ q4 |' B
}
2 _, q6 ?; m. S4 u7 m [/ T0 \" ]8 y' j5 V: F( t+ C. e
void GPIOBankPinMuxSet(void)$ X" R) P/ E' b; R7 D5 X# T, K
{! }! ^4 b, o, p% I8 e$ v
// DRDY ------------ GPIO6[14] -- 111; O' X* Z3 V1 J& @# `1 F9 ~
// SPI1_CLK ------------ GPIO2[13] -- 46( o; y/ Q- s: f% j2 d1 f
// SPI1_SOMI------------ GPIO2[11] -- 44
+ J) N1 X7 ~* P // SPI1_SIMO------------ GPIO2[10] -- 43
* ?1 @, _$ Y7 o- s2 ?2 K" ^8 } // SPI1_CS2 ------------ GPIO1[0] -- 17
' ]2 e% W6 o S% n/ f8 ^& K6 h1 { // SPI1_CS3 ------------ GPIO1[1] -- 18
0 x6 K/ u: {6 p3 f& \" w6 a) L9 M4 M) I' Q
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
" x) x! S) H0 }. S* W; \ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);+ x2 w2 z/ N# `* j2 H
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);8 `/ ~! i! L/ t, C# u4 s; A/ N
! Q' `/ ^) K1 b7 i6 J //DRDY
' b- V+ q: \1 l4 c' z* m GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY7 ~; ^( T9 G! N& [, S$ \$ W) D
// CS2,CS37 j0 n3 L+ r% W$ c& P1 j/ j
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2) v5 a$ Z8 \, r$ D& W0 j, y
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS30 b4 u# v& w2 }; c7 L- d
//SIMO; i9 l. R9 ]! Y6 ^1 ?
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
+ \" z' R% ?+ }. z8 {- Y4 ^; U //SOMI. {- i u5 e. d8 S+ ]' V
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI* D% Y1 o) h( t4 k- ?9 M9 e! y& O
//CLK& B' f+ s4 h3 s4 a' S1 s8 C
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK, J( h% l4 J5 v E
# L* }3 H& g) S2 \# H+ j // LDAC
7 Q! q5 y i$ l! _! O6 X GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
) Y0 {& y$ @2 ~8 w! M; r& C; k( ~ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN( D1 z' i/ G4 r/ Q
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
3 S1 U4 m4 e3 o5 e6 ]2 W GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3( i1 m& i5 ^+ K4 L8 f+ E1 N* e) Y
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
: D7 E, U8 j. |6 j, Y1 ]}
# a3 A$ ^/ M1 u6 R# E' x. q8 F# }# n5 I
int main(void)
+ a3 L! t Y, ^5 D6 p4 f{
" E# h3 d) B8 k: s, J/ I // 外设使能
4 Y2 @9 I: d0 d PSCInit();
7 H6 N# \2 s6 U M5 \1 K
) i Z3 K% r5 h- ~, y
! V2 @) }& |9 p* v // 管脚复用配置
" A2 R# V$ P7 {3 i9 S, e GPIOBankPinMuxSet();
/ W$ i: r2 V2 `6 Z for(;;)
1 {5 @- j9 x$ r% Y! w4 H) ? {
& W$ g! [! o( @8 H/ L SET_SCLK();//时钟正常输出# Q$ y3 x3 d9 a; I) ?; B- ]- L
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2( D; p/ L! Q o5 s2 e7 k, @
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
$ ^# Y2 l' g* W* q0 L" Q GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
. b( v+ ?5 w4 {5 M" v9 L0 Y2 S' L
3 h2 A9 }. ?4 x5 D0 @ delay(20);
5 q! Q( o2 T, ?- N CLR_SCLK();, y4 d# H1 Z5 s& [ d
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
, i( d6 j( A' _6 C GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
+ c. ] V# v& [9 C1 b2 i GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN8 u/ R6 `3 P/ B
delay(20);
* _* W' O, H1 y l X+ H1 ` }
; K7 ?2 ^1 C% X8 z K}
6 [1 F0 `$ H3 I! s7 u |
|