|
|
使用下面的例子代码,不能使SIMO和CS为低电平:4 L# h$ u) H) Y+ ~1 X* K4 X% {
void PSCInit(void)
! f9 t. j2 [ p' L" w; z{
' R8 Q6 E: `, A2 T+ q6 n# d% n: w PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);: f2 v1 x7 a9 y8 T
}
$ u( F/ N; K- t3 e% @2 U5 T3 L6 t4 h
void GPIOBankPinMuxSet(void)& o3 @" Q' ^- H2 V: R; F: u, F
{
2 F" E5 N" f$ u+ u# \ // DRDY ------------ GPIO6[14] -- 111- t6 K: P2 j) h" E1 P" ?# z
// SPI1_CLK ------------ GPIO2[13] -- 46: \3 f3 d" c+ [0 q& ^; F
// SPI1_SOMI------------ GPIO2[11] -- 44) Y' U/ d4 \6 u) R* n3 ~
// SPI1_SIMO------------ GPIO2[10] -- 43, c3 G( \/ s. L+ f9 C* v
// SPI1_CS2 ------------ GPIO1[0] -- 17
8 j$ q! X) i; J8 K // SPI1_CS3 ------------ GPIO1[1] -- 18
: S( J) x Z3 n7 F; m& [6 d, S# s/ m' [5 s5 V0 L3 F
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);$ ]. S% B8 \$ i
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
9 A- F% B* l# Q1 r HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);$ @/ S! }1 j0 S _
" L/ [$ z. G' k5 Y% c5 i
//DRDY1 i( @# F% y* \* y, z6 t( {+ M
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
9 |9 {! Q" q# g5 @6 Z8 }5 D( d# N" { // CS2,CS36 O9 l- w0 A. U! g! x. \
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
) |. ]" z, k c+ B1 [ GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
$ ` Q5 N# G, B- O- ]1 ?' r //SIMO4 z/ s* B* g5 p- d% _! ~! O1 [; {* R
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO/ Z; a+ o1 \' G5 f5 _0 g2 U- d! I' K
//SOMI9 G" U4 P6 h5 F4 s
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
+ F" U3 ^& ]5 k& X; L- L4 w //CLK) r+ y- X" T5 {1 p- D* @' t# b
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
; E' N3 z0 H& s4 d
, S. v/ j3 o4 H1 E3 x+ q7 J+ r // LDAC+ x0 V P2 u* D% W
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
$ C& k$ C2 f8 K5 L2 } GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN% O( }+ V/ ^' X/ o
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS29 O, g) c$ x+ |0 T9 \6 ^
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS33 s# n; Q& \( ^; d+ h/ \3 b5 @
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY) o9 V, [& Y6 M- i
}9 G! A6 \, O+ f( I3 B
" r }" |2 Q, [$ |/ u5 Oint main(void)
8 `: S$ y! W3 @{) ]5 y) i) ]8 [ Z) }
// 外设使能+ Z( Y) z/ v6 V; h
PSCInit();6 x9 G' S+ V* ]2 c/ x
$ v/ c/ M. h7 |* `& S, H
$ O/ H* S H3 y- k9 z1 W% \ // 管脚复用配置' K2 H, u# Z% t1 \# Y! s
GPIOBankPinMuxSet();6 n1 h/ ]) m P* Z1 N7 A, k
for(;;)
; P# @6 A- M1 P# Q2 b! l) u {
6 t8 J8 h! d- {. S& Q0 D SET_SCLK();//时钟正常输出
3 L# K# j; ?# Q$ Q" w GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
, I6 \# C7 a! [! W% ?6 X, @ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3. d0 O5 U. E/ R3 T( u9 Q" w# \
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN/ U3 s. t8 L/ K1 E
& D7 R+ z8 h% { delay(20);
8 i* |: S, ]/ K4 K0 S( A CLR_SCLK();
& U4 g. i/ [5 J8 T( j: {! r% e GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3) \* Y$ |4 [, e' I
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
) }# {; L% w" h! U GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN, T6 |/ x% q/ ?/ W
delay(20);
& E; O9 I# [' O. [0 } }
; p( s4 ~% {' ^$ \! {& Q5 p}
; P% R, Y J# K; i2 N+ H/ } |
|