|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
9 p' i# ?, }3 ?/ n. l1 hvoid PSCInit(void)/ V4 p8 U. H* A1 n! Z8 F' s
{
) P! I: E$ Z7 [3 W6 u# K PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
; U/ c- [! c2 r1 {) v3 m$ `}
) L- N( o6 j4 O8 S) ^3 G- Z- C9 f* [) |9 k! q6 e
void GPIOBankPinMuxSet(void)
9 v/ C+ G# {5 S& f5 r7 @5 k; r7 r{/ R3 R' v" g3 ~8 k; n* R
// DRDY ------------ GPIO6[14] -- 111 z/ l+ H0 Q/ y* i, [9 P0 z2 [- `
// SPI1_CLK ------------ GPIO2[13] -- 46
& H, i' K1 C( \# Z" ]% P/ t: Y // SPI1_SOMI------------ GPIO2[11] -- 44, a8 c0 z( P% m: H
// SPI1_SIMO------------ GPIO2[10] -- 43/ |) t1 q, d& ] J) N
// SPI1_CS2 ------------ GPIO1[0] -- 17
# ?& z! ~2 D. U# Y9 F3 t // SPI1_CS3 ------------ GPIO1[1] -- 18) e. ?0 D: ], P2 T9 z
) o' C! t: z" O" o+ X( c ^# B HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);: w6 Q6 U; v# H' C
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);. L. F, Q6 B4 K
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
- f, b& w E: R0 q) m- e W; h& z. V; E7 J. K) j
//DRDY- v9 i9 p, M1 h$ q& G. @
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY( h# H7 w$ C% G4 V8 q d. u8 q( R
// CS2,CS3
7 Y% n! s0 p N" `4 u7 h GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
0 |+ `5 a8 @1 G% X9 [* J GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3( ?. d# z4 Y7 M p% C
//SIMO0 |: h* u! c$ \3 h# r
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO+ v3 L+ }! w0 m
//SOMI0 u+ @4 { h8 s
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI/ s [9 K4 k% `( p/ J# }
//CLK
# B3 _, p3 n$ `% X GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
4 b/ B) {- N0 d0 ^/ Z. h9 j# I6 @) y4 l
// LDAC# A' ]; f- d8 R, Z% o
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
. Q" b+ I% V- F$ [ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
3 }+ c; S% t) g GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2# M9 @) e; a( _4 _! A: M( Y
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3: E4 H6 d8 i/ e2 g: R& W% {( Y' P- A
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
( b' V: m5 }& _! u}
: x( T5 t0 f8 @7 o5 ~2 z% [" @5 B5 L% M. O
int main(void); R2 a3 |. ], H+ V8 m- W
{
9 H# I0 g+ @3 ^" J // 外设使能
L& U1 L1 @8 [) D/ ~ PSCInit();
/ i- h, V+ y& F* G( ], e* N+ d8 w( t
" s5 l* |2 S! ~" c( r, @ M // 管脚复用配置
. G/ ]! y1 }! B, q0 L4 E4 m/ c GPIOBankPinMuxSet();
! { {3 f" A; b2 Y+ Y1 l for(;;)# G# F8 q) z9 A. X3 S
{
$ U8 s, A6 O/ o- v SET_SCLK();//时钟正常输出5 {) q' e& X- U, b
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2$ x5 N- ]% @+ u& l' r$ G9 {
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
1 n. F2 H; D- D6 K/ G3 g u GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
" S& p- v+ L9 h0 S7 q- `# W3 g5 d
delay(20);+ u4 D& j( }1 m% @% e' k
CLR_SCLK();
{6 T; B) @- j5 F, j M3 B! K GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3 }3 K7 ]* {8 f
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
0 V2 g2 ]. F. R GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN( G( O2 q' Y8 k9 X
delay(20);
% U% S' B3 L. A7 @. l4 c/ g }
' {. K( |0 }5 x. S4 i}; A7 K! t! F2 ~; q& O
|
|