|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
& Q& [/ X9 g% K* U+ r. m6 Rvoid PSCInit(void)
. n% ?+ `* f3 E0 ?" v& O4 U{
! k6 R6 _/ a8 G PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);# m% [: N* L0 `) z/ H" F0 v3 U
}
" }6 |( D& o$ O+ e' e* [9 ?; B6 M1 M; p
void GPIOBankPinMuxSet(void), {* w8 ?# Y1 ^" J$ f5 f# t: d
{
# O) F% I7 u8 S, o- ?" E // DRDY ------------ GPIO6[14] -- 1118 B, V: J+ I7 e! r7 A6 P- J0 u% Q( ?
// SPI1_CLK ------------ GPIO2[13] -- 46 q! D( F. U8 U: ?! X( K3 H
// SPI1_SOMI------------ GPIO2[11] -- 44
+ ?4 W+ H' `! ~' W4 V4 _2 W // SPI1_SIMO------------ GPIO2[10] -- 43
/ C7 z3 J9 G. {5 t- ` |" ] // SPI1_CS2 ------------ GPIO1[0] -- 177 v) a7 I: p+ N" ?. P8 }
// SPI1_CS3 ------------ GPIO1[1] -- 183 L; X6 j6 d6 Y; F$ E2 v) w2 [
& Q5 i: u2 _' B, D% {6 Q HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
- [$ D! Q( X- K. Z HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
4 F7 p8 E. T( Z# Z% b0 T/ } HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
7 w9 T7 b) q3 X9 C$ L E! I' Y) C' Z7 n1 C( ?& d: ~' n
//DRDY
# d; n7 Z+ _1 h: Q GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY F7 |! Z# }6 d' D6 h
// CS2,CS3 r4 K. t9 C9 ?8 k) }
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
' I+ C7 X- e* H! q: z GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
. o& q9 G, h$ ` //SIMO5 T+ B6 P) W$ ]" U! q
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
. v( ]$ t! B! b ]% J; Z+ H //SOMI/ i6 e2 @( e8 \$ a$ `! u5 j
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI% M) }* Z" @6 @( N+ `4 A. j# G9 v
//CLK7 e" |4 m. N& d# C
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK4 u5 d4 [; W! u9 I9 Y
" B* v3 Y1 z' |+ c' l% f // LDAC
; B, j" x0 J) r GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK5 V- Q4 ~8 k4 l7 F" k D) n6 L
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN4 p' ], {. o$ ?
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2) _' M9 y# |' F
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
" P. ]% X, q4 O/ s8 E2 {" U GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
) R5 p3 g! p, E}
8 O& f/ p- V% E8 ~- _& ?* Q, M
5 A, [: O6 ]: b: _1 Iint main(void)
5 p' |( }0 M2 X9 a* b! e/ {; Z{
/ ?) Y) y6 X) d' v, F // 外设使能
9 _1 z9 j& R2 o6 j PSCInit();" n- b8 k1 W3 K3 q4 C9 A
9 K6 c* h5 Y+ c, u
8 L( F/ L, f& y7 ^ // 管脚复用配置
4 d# ^, R8 v0 |/ L$ f GPIOBankPinMuxSet();
0 [9 D8 _0 q$ R) r4 q8 f8 v for(;;)- s k+ a0 H" ~9 }' w, T
{
% u5 h5 p2 h! b3 O3 x a4 b( B SET_SCLK();//时钟正常输出; s' K _) M* v% q3 V
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
7 N t l6 @" N& m) y3 D GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
- v5 |' N1 k' ` GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
. [( ]: m8 F5 J, c- X/ w+ e
5 w6 n9 {' ^* s- p/ M' N8 n$ y; I delay(20);7 e" C, Y5 X. O9 M3 y0 ]
CLR_SCLK();
! p# Q4 e8 k4 k- R GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3: [3 F: f* N4 @3 e
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
1 U$ d, V: v2 H% B( R- l2 j GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
( j' w# @9 |; g0 [) {2 u delay(20);$ p# N: `+ J2 I" C- I
}6 n x- Z$ D; B: Q- D
}
# l, I5 v$ ~+ s3 k' h6 d |
|