|
|
使用下面的例子代码,不能使SIMO和CS为低电平:+ A0 D- R* |0 U/ b7 h8 e
void PSCInit(void)
2 V8 R0 o* e$ L: J{
6 y. s, ]$ r6 D) @, f3 e. o" F PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
8 @0 w2 S3 @: j7 `0 A4 i}1 E9 ~) l) K y1 T$ d! P
9 n$ Q$ l5 k1 `4 ^; C: `* [
void GPIOBankPinMuxSet(void)3 Q5 E0 ^. E- U9 o) d q
{1 ]; H1 X1 O# V# Z' B) L8 U" ]
// DRDY ------------ GPIO6[14] -- 111
# y) l4 e6 {4 ]$ U3 m // SPI1_CLK ------------ GPIO2[13] -- 46' l3 k6 t7 g: A
// SPI1_SOMI------------ GPIO2[11] -- 44
5 ?1 o6 e# O/ Y e1 G+ N: h4 d // SPI1_SIMO------------ GPIO2[10] -- 43
) [* F8 \1 H* W: w+ k! z9 ~; f0 J // SPI1_CS2 ------------ GPIO1[0] -- 17
0 X) G+ V, k; F" z4 s9 E4 i6 t // SPI1_CS3 ------------ GPIO1[1] -- 18
- p! a9 z n( L1 r/ M/ g
2 e, x# G( Q( a! _+ a# ~ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);( {) F: e8 P& D. C/ R
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);) V& H( g# @, G! U
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);# Q. L# {& t W5 U" [+ V
! e, { T/ z% S! M& ?- j
//DRDY! V9 A1 s5 _' i- \' X8 o
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
5 U' S7 z$ |: l" }$ f6 u' {3 P // CS2,CS3+ w6 j. g! I; c' Y/ ^# d
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
6 g4 t3 m* I4 Q' _: }+ U% m1 O GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS35 J/ P) @* |9 y! A
//SIMO% F: J$ C9 g" g$ @/ J
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO1 d% Z- q( s S' y, A( m" M! e
//SOMI3 m) O5 c2 J m( G! L! ?6 Y
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI8 i% _ l8 A$ ]7 u* F, |; J
//CLK
- e( L, J/ G! q3 P GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
1 [6 X" h8 v8 ?1 I
* s! @' N. s( ? // LDAC0 \: G. ]# M, t2 i8 b8 A, i' k, P5 _( ^
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK6 v' P' y5 m- u6 q3 K
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
3 ?# U6 c1 c7 S# a GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
" R# _0 `) N; S4 _0 i4 N5 _0 ?$ S0 { GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3! a- d- x, w% e E
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
% {0 Z+ }/ ?" y; a}, q+ R s; Q* D; u. z% f
$ w% j2 C+ z: `& r! t
int main(void) E# r, q# e5 o; z6 g
{
3 m% y5 L4 C' ]7 E$ C // 外设使能
# E' E$ v0 t0 y2 T- y7 t PSCInit();
, U$ g8 v! s T) e' \' s
7 s$ C8 Y$ D0 |) h ; L- v# y9 O. f* V
// 管脚复用配置
! j" N6 _" D3 J: x GPIOBankPinMuxSet();
. `" z% z3 s( Z) W0 n for(;;)
, g% ?% y) s; q* G' w# v1 Y {9 n& R+ S0 z, V
SET_SCLK();//时钟正常输出8 S( h5 Q4 I4 [5 \9 Z3 z0 ~
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
: J5 R2 g3 e+ s- l# F GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
9 B( h/ d5 h0 \ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN% E6 F, K' U2 n- K8 u
) w+ z, i$ ~% [
delay(20);8 `" \& F4 z+ m# Y
CLR_SCLK();
6 M* R8 A4 v$ M; k+ Y8 n GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3# i Z6 U9 M) Y6 D* L' z- m( d
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
" b3 [- X/ e) p9 N GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN' h' _* G" ]; ^4 W7 f/ W) l! I- l' F7 L
delay(20);
4 ^6 }# l+ D( l }& V4 V+ P" T2 a' o* d
}; G j- p! ~; j% ~5 H
|
|