|
|
使用下面的例子代码,不能使SIMO和CS为低电平:' t" P+ I. g1 Q7 F! N
void PSCInit(void)
# T1 K' N- h% c9 k8 i V{
6 j* p9 W* [2 Z1 j. q7 i! P# U PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
$ ~+ Z/ E' ?- M* x! h! T i}
2 @. {. g) V3 o
5 C3 z$ S0 C8 o" ?void GPIOBankPinMuxSet(void)1 N5 H+ I4 l i. Z6 S2 c
{
) P* {" e1 F2 U/ k! v: j0 A! y- R // DRDY ------------ GPIO6[14] -- 111
], o! i' d8 W4 F0 x/ Z // SPI1_CLK ------------ GPIO2[13] -- 46
* j$ r6 s5 Q9 `; Y+ C8 x7 a, n$ p // SPI1_SOMI------------ GPIO2[11] -- 445 ?& \3 Y7 S3 X: w" ^
// SPI1_SIMO------------ GPIO2[10] -- 43
1 h" I! r* v' z+ I3 O; ~! y+ e // SPI1_CS2 ------------ GPIO1[0] -- 17+ }* @/ O+ j0 Z! Y
// SPI1_CS3 ------------ GPIO1[1] -- 188 I5 e0 h8 V8 t% f2 U' ]% s
! M6 c/ N7 u: x! V
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);1 J$ ^, q2 U5 F; @# b6 }
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
& \# h" f3 ]/ a HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
/ H0 k6 T; `, J, k
6 I: S$ ^; q4 [1 X: |0 d4 W1 l! H //DRDY
3 l0 i6 i- F$ P GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
* O. s! u' M3 @: z+ Z, K // CS2,CS32 ?* {% Z! w/ K8 P# ~
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2; z4 U/ c; N7 A3 N. T# h: d
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
; f* B* I; D2 m; q, r //SIMO
6 }( u! n2 J( q( T+ L9 B- E GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO8 I& g" z7 I" X4 m' Z
//SOMI3 t0 X6 X4 T0 _% ]. Z9 k
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
5 J7 `% Z, r0 a' @ //CLK3 W- Z- j" R( A
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
$ W' k# K1 K# @4 G' y& e* y- ^; W* c5 F6 o- w- e! }& F/ D
// LDAC
9 f/ B* |) i2 k$ j GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK3 |5 O, c& S/ D) }6 s
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
# K. P! r/ \) u! E GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
$ [. t6 h4 X3 n" P- z$ M' B GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
+ J" n: @! o% U GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
c6 _7 s* c% r' u# P4 ^( o5 W1 o}+ u4 d- \; P: Z6 V& E% E& V
0 }3 g* A. r# v8 Z2 x: I' T Tint main(void)7 m& [$ S. S5 J, N
{
2 p4 d4 d8 @# @' L // 外设使能& t8 R0 J: e) N3 @
PSCInit();
* H0 {% s& f7 @( Z
, {# r& r0 p; }0 ?
8 r5 @5 g6 }: _ // 管脚复用配置
0 X$ P8 o% ^! G" O7 ]+ N9 g% A GPIOBankPinMuxSet();3 M' s7 n& g& t
for(;;)
) v' o4 J! b2 ^9 N6 X u. e4 M+ L {
3 M4 h+ m% g* P' u SET_SCLK();//时钟正常输出
: k) m" C- H# q1 a5 Y2 e GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
( X5 a7 T2 R' y# r% g2 f# S# C+ H GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
) o4 m, v/ V. z H W/ [ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN7 w1 g5 r6 [/ w3 p, o' G
! p% |/ g6 E' q8 V3 k
delay(20);
! `# r) t; q7 k3 a" M CLR_SCLK();4 p; z7 E3 z2 Q, [" ^
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3: w$ V& H2 \$ I$ e
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
5 T/ D) G: o, y9 O GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
: a$ t4 P! t& G+ H; c6 y( A$ p delay(20);
5 f/ w: \1 j- X/ G- T+ A! m$ F6 w# U }# F' r+ I; n; R- z( e
}
8 y# B. J- P) O |
|