|
|
使用下面的例子代码,不能使SIMO和CS为低电平:! D, I2 K0 |9 X# i( x k* _
void PSCInit(void)- H) H: r. \- b1 y( B. `
{
, ^. d ]* f; W% m$ E PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);; x f v7 ]% v
} w8 `" Z$ n" |8 |+ W
, B' b. k$ ~) u2 \" ?' e8 z+ A/ `6 |void GPIOBankPinMuxSet(void)
5 }+ H; |: D% ^) R u4 m& [6 l4 A{
$ n% G! Q! K: G9 e8 I4 t // DRDY ------------ GPIO6[14] -- 111
$ f1 T4 @: V; F* ~/ K3 n // SPI1_CLK ------------ GPIO2[13] -- 46
2 P( X! a \# U) @* R // SPI1_SOMI------------ GPIO2[11] -- 44
/ |$ ?6 D) H* P' @5 J/ K // SPI1_SIMO------------ GPIO2[10] -- 43- z& [# V0 Z: f+ z' Y
// SPI1_CS2 ------------ GPIO1[0] -- 17
u! j! z) d, q& n7 q2 J2 b% J! a // SPI1_CS3 ------------ GPIO1[1] -- 18( R& H; [- w$ {- z5 }+ W$ k
- e3 g0 c5 P% ]* k6 a
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
4 o) W6 l& |/ Q, O HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);3 C, i7 z$ V& g; e* ^1 u2 Q
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
- }2 e: n% W9 T; J/ Y0 C
+ H( C; U3 y! F) i$ V; U //DRDY2 c8 J' _: s3 T, L
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY; g5 B# \/ `' s8 |& s4 c
// CS2,CS3
' ~2 |4 o! B; t6 C5 B3 F% D& O GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
! d3 s: d% X z( R" T) ?2 ~4 U GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3/ f/ H8 ~$ g! E) H/ P
//SIMO% {2 [% s3 _1 @: K& J4 z
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO y4 D2 j: R) v# b% r* q% z
//SOMI
F* Z: x: D7 h8 q" a GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
3 U, L1 z8 Z# x. i: n! O //CLK
- D8 c$ L$ m" U+ ` GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
3 t1 O: Z9 c" ^5 l2 j- o' R& d+ _5 i
// LDAC
1 R3 x. }9 ~+ W8 i GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
! {0 s- U" Y/ a1 g- R& \# k1 L GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN3 v: V2 }, _3 C1 J* \! l" a
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
$ @% b8 z; R- ?3 ? GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
; F# U2 H: b6 Z1 z4 `0 G1 C6 g GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
+ {, n% ~. k9 }* C}
% C( I9 i; @. i9 F! s5 o @% b; f, F+ L4 y
int main(void)
' W1 _8 z m: s9 |/ o5 g$ y{# p8 h" l) U4 {
// 外设使能2 U5 M) d U) G) |; y6 ?
PSCInit();
7 y. P. x+ m; w# V+ `6 K$ V' K# z' h7 P$ R
5 ~& j3 t# a/ a& r$ O // 管脚复用配置" _6 O8 |1 j" g6 N
GPIOBankPinMuxSet();
4 y* V6 A8 \, u+ W8 A ~, o" i for(;;)* h( ?, I: N/ N" I5 ]5 f
{
4 W4 g" p0 F& U$ h f. G4 Z SET_SCLK();//时钟正常输出* I2 C8 G `6 Q$ _# S" J# P
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2! I0 Y/ _6 b$ t9 w( \0 {( m
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3! W' _3 F$ z& j& _
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
! E; n) x1 [" B+ g2 J: e" f; L) e9 b# q1 x2 a
delay(20);( C* y: F4 m5 T* e" s, G
CLR_SCLK();7 z; l) _$ C& l4 ]
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
: S. y! s7 r% t7 m. X" j% k4 P GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS32 X/ I2 O! g* D* D+ x
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN. k0 S0 r% I$ b5 k! ]% d& P9 o
delay(20);
2 ?/ c7 A/ k' ?* J8 ] }, l! f2 w4 e9 z9 H% u% N
}
* V3 E& l3 W' d* E. F. J |
|