|
|
使用下面的例子代码,不能使SIMO和CS为低电平:2 u8 [9 R. ^& J8 t9 m
void PSCInit(void)
0 r3 E3 C+ }" v$ \0 y9 X{
4 |" E0 F5 {5 w2 z PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
# Z! d, M3 m4 |: I6 B}% t5 ? E; R r+ `8 f0 a' c
6 |5 H3 g' d# b* x$ ~
void GPIOBankPinMuxSet(void)+ h d$ o9 ~4 l7 j8 _1 H
{/ P! U$ P, e, k w8 b" ]
// DRDY ------------ GPIO6[14] -- 1116 c5 f- n* z: \; A' E$ z$ [' b) I; D
// SPI1_CLK ------------ GPIO2[13] -- 46, z% y# O! R. p1 ?3 V
// SPI1_SOMI------------ GPIO2[11] -- 44
" H6 y3 j" V. X1 {' t+ |( X7 D // SPI1_SIMO------------ GPIO2[10] -- 43
6 I8 W# t9 k- c) B: k% S // SPI1_CS2 ------------ GPIO1[0] -- 17. Q0 Z: ^' c/ x/ s2 Z1 s/ F
// SPI1_CS3 ------------ GPIO1[1] -- 18, g8 j! K- \0 P' m$ F4 i
: V9 k# N [% u7 c# H
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
# Z" E! z' c4 U HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);* U) i' [' _) z1 V# B+ v3 m
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);2 H3 S ?' J' P1 I. `# |; f5 ]
8 \! U) f- }4 @) W
//DRDY
! O" @) F) m3 ?6 t! a& U* p GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
, n) o0 r S) f+ \$ d" `8 W3 d8 g. \ // CS2,CS3
! Z5 d, T3 ^. h; W GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2# j6 E3 P, p% ]' M7 T2 r" P
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
/ z: g( q! N0 `" p! _/ G; H //SIMO4 p4 m F! O+ t. j- \
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO ~! J6 E2 T) z+ Q5 J
//SOMI
5 u, i' B6 ]' p( N7 H GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
( C( O# Q/ U. @3 ] //CLK
$ |1 ]. G; b& m2 j, D GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK9 t a7 t; O4 [
% V' ]- k. m8 O // LDAC
; T( Q9 k4 i9 u8 T) b; ?7 \ GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
5 ^! E6 \. J, U7 t6 q) p GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN, m- }/ c1 D' j* y! P, [8 F1 U
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2& I' |' i7 g7 u$ o
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3; k! d" U: {$ r7 s% z: _' h& | L3 `8 Y/ I5 B
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY+ `. H; X |) N/ A: W4 Q) w
}) y! C/ Z t: s6 {; ^
$ U( u f- g# J5 D4 d5 w. d$ {
int main(void)
2 b6 G9 ?* v5 Q! U{
& `8 `; g" s2 ], L; j // 外设使能
) N9 l3 N: r. b1 A8 l8 p PSCInit();) O$ q+ w: j' q0 M1 u1 k& a) W
3 A8 O. o4 h1 }; H) \6 Q; T
) M2 j( l5 f- S // 管脚复用配置
% Y: n4 I& p' {7 G8 K( l GPIOBankPinMuxSet();
' R K' G6 G' o, ]7 _% C2 S for(;;)/ R$ t- T& f2 \/ ~, |3 }! v" {
{
+ d K, z4 V" }, `7 K% A& j6 r SET_SCLK();//时钟正常输出
$ U: b6 ^, f- y+ R% T. h' A# Q* p+ J; Z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2$ o' h( ~3 w9 D4 [& r
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3( e* f& F) I' \# C
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
1 Y r0 h- q# i6 P7 b
# ]7 P' f: n; Q/ R delay(20);; x) h( F! E1 J3 `6 c/ j3 ~% D9 D
CLR_SCLK();, u7 }3 t! \. K% W- z' a/ \& j+ d
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
; ?# ^4 q- m2 W% m; t GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
8 r U# M/ P0 ~; J GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
+ _) P8 n2 `' j+ m8 k& ~. P delay(20);5 I! d) M, f, l- ]/ y& z' _( o
}
9 G5 P! S" o' |" w3 P}- c, X) |& m4 ?/ Q* H& z+ r$ C
|
|