|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
' v0 u1 c, e: Q: k! N, |0 Pvoid PSCInit(void)7 U. @+ F3 }9 J4 ]8 f6 F
{7 r* N* S0 N: V/ `0 I8 F+ W
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
3 z; P7 B+ N8 u/ W$ O% l6 z}
" `4 n# O4 U# b- ?1 W/ O8 @8 j0 f, G! l( @/ L- I# C5 Z
void GPIOBankPinMuxSet(void)* ^3 A0 a7 C6 E' o3 L
{
2 n4 C: f0 S4 N. h% t& P // DRDY ------------ GPIO6[14] -- 111. P9 K: S* C% y, U, r9 ?4 d
// SPI1_CLK ------------ GPIO2[13] -- 46
; p8 ]3 {' r4 l- B' f // SPI1_SOMI------------ GPIO2[11] -- 442 d, t1 F( R/ X
// SPI1_SIMO------------ GPIO2[10] -- 43
& i- c; ?: R. X // SPI1_CS2 ------------ GPIO1[0] -- 17
* Q* |: i) w( w- e" T // SPI1_CS3 ------------ GPIO1[1] -- 18
3 Q2 I7 P( g- }1 x; h- V8 w& p
' I; {4 R# h# h* O8 k& s+ z HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
" `+ {, A J: _/ u HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
( ^8 `! u4 K8 v' N9 p6 m HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
2 k9 ^1 Y _ J2 S7 U5 k3 z" P; a: G6 q) \% N* Q
//DRDY
! a9 N8 d. Z8 y GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
% K" g* P! c2 A8 h // CS2,CS3( ^1 K2 ~+ G( M1 O u
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
i# u& }% q M' D1 }, _ GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS32 @$ {' ~0 h- R( L e4 {" o
//SIMO
- {( { X# z& B0 ~9 r" F# q GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO1 G1 g5 a- I. F+ A
//SOMI- Y- ]6 H. K; T9 L$ a& {
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI9 B6 x( z9 M" |1 @( H1 ^+ P
//CLK
9 h2 T7 E6 J' m- w& p8 [ GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
: E' S& G( O$ Z0 N4 ^0 N$ S) |; x, h- S: y s
// LDAC
) A$ H" f0 h5 Q$ m$ [1 O( D8 X GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK0 B8 ?) z0 z: A8 X
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" o7 U6 {8 e" \% s
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
* r+ r" T# H3 @( ^5 p GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3$ H- ~ r- A( _4 W) v# L7 P6 ^
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY6 D: h. J. H, V @3 E3 i& Y+ D
}& B5 g2 j5 s, I3 ]* P
) h' F5 c$ C, q: U
int main(void)' H+ P% Y, n' ]3 R+ k- f% \0 \
{
& M8 Y, P1 \! y // 外设使能 c5 p7 f( e; N8 [
PSCInit();
& n7 r" D7 ?1 w, A. l- [+ q( C2 I2 c2 k2 u8 V; E% r. J
. p% }0 T- \- ?3 M9 f) ^% s // 管脚复用配置
5 Q$ }$ A, K* _ Y$ N; g GPIOBankPinMuxSet();6 N4 z9 D; k3 a k$ a" l
for(;;)9 V) j6 n6 L$ d' O) n2 U
{& p+ F. y' `0 Y+ g% D( B
SET_SCLK();//时钟正常输出/ x3 g, p' c5 Q' e: K$ M
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2* i& q( u9 {7 s9 s( {
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
# E" Y( @9 c; \- ?2 { GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN6 R( K3 [4 o3 `+ A
3 d# \" h a1 w4 R3 | delay(20);( P" V X! ]- v3 a& j2 {- p
CLR_SCLK();
" a: k0 V% |9 X6 D1 L2 V; B GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3; w+ W8 n2 F: q
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS36 m) ^' s0 r+ I2 I
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
& K/ `3 B7 i3 f: B, m4 }- V( s delay(20);
' M! K! n* p. J8 ~/ [ }! v( o3 o! A3 D! K2 O4 o7 a
}, V3 l& y$ L2 z: W; D
|
|