|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
. C- U2 F* y+ Avoid PSCInit(void)0 `5 Y9 X3 m4 @% g
{
. `! T0 j: k' I( \7 V PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);% L q1 X$ s x* t* V! w3 g
}( d) L) ^; Y1 I
' Y5 }# Y/ a2 w% G0 `5 B& O+ X
void GPIOBankPinMuxSet(void)
5 I9 {/ D$ R; [; c2 z{
! X1 _( ^: x9 i3 [9 n1 c$ z7 T // DRDY ------------ GPIO6[14] -- 111
4 {% u+ U; V) R( l // SPI1_CLK ------------ GPIO2[13] -- 46, ~3 N2 b: w) w+ h/ A
// SPI1_SOMI------------ GPIO2[11] -- 44' G/ _; G$ P. V; Y5 Z! e
// SPI1_SIMO------------ GPIO2[10] -- 43) i- P1 ~! Z; z% T t( ^
// SPI1_CS2 ------------ GPIO1[0] -- 17
, q8 Y, e) n8 z // SPI1_CS3 ------------ GPIO1[1] -- 18
, `. Y% |" j5 V4 e
1 Q( }, j- ]) c5 ^* \( c HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);6 C7 d/ z9 Q0 O+ d; J8 Z- Y0 `
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
5 i; P3 Y" j/ z- M. x0 a9 b3 e HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
0 R/ \/ d% W3 G* j0 D
+ n- ]& D6 r5 t9 |) |' Z" ^ //DRDY) V% H6 s+ @; `4 K3 Q& o
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
. g: w3 u( f. R3 ^' H& g' Y // CS2,CS3
4 y4 n) A9 f7 p; B GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
& x* l' k: R9 m/ |3 Q GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS31 G$ J w4 t! {7 J: n
//SIMO
0 g8 q$ {- @$ ~! m& r: Y GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO9 y4 | v! q/ O. E
//SOMI
; o b% X' {. C6 y6 Q. ~; y GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI: {) u R; Y' |: o
//CLK9 p- {4 F7 }& f$ R L) B7 p2 J
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
( ?0 u# `# c* k/ c# r/ a( `/ ?
6 T% h5 i6 T, @! ~+ x // LDAC6 o' F( f# R0 k1 g5 J
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK6 ~- u r7 e- D A4 {
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
" @( @) S/ {% v4 s9 C0 @- ?$ U9 H GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2+ o I1 j. x+ [" M; Z
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
" G7 \: @' g# v GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
1 U) L+ U! }- @( }- C( k( u}
: x' |( ?8 C+ g
) Z' E" H, @9 {4 ~int main(void)2 S! f9 r7 R' d7 A8 u& E/ X; l
{
5 T. T& ?" y3 P // 外设使能0 W- |7 @7 Q0 D8 C$ b* \+ c, O" z1 ?
PSCInit();
7 V4 U' f& d% W& b6 I* a/ {# u0 e8 |, p* [- y
' |- \/ G" z* l) v4 C2 t // 管脚复用配置# N6 p1 x- Y% m; r6 k x9 r
GPIOBankPinMuxSet();, L* o- C9 w' Z0 q3 G* M5 Q4 S
for(;;)5 }: G$ D! N* z9 h
{
) v5 e/ |/ S3 D' P' k# G0 J SET_SCLK();//时钟正常输出
; R! `: u P$ G; f3 L( p2 {$ j" _/ i GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
, F7 \0 U& K9 \6 b g3 a GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
0 l, M- R% Y- w) e( |7 n GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN, i! f- c, C& F- e6 k
; `! @9 Y0 A; d/ e$ n" K- J
delay(20);
3 b2 |$ z& A1 G6 X' L CLR_SCLK();7 }6 l3 y5 a- A+ h6 }$ C0 Y* u1 x
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3" o) G- Q3 j, b. K$ J8 ^
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
3 G$ C. u& u9 X GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" p# ]* D, ]; `; F2 N. Y$ w
delay(20);
: r U5 l! u- r! r- e& M0 j& G }
/ A3 w1 P2 b0 B$ \: p' z$ S}
, o3 |. ~* Q0 K$ f+ H) m |
|